wake-up-neo.com

Hat Qt eine C-Schnittstelle?

Ich habe widersprüchliche Antworten im Web gefunden - einige sagen, es stimmt, andere sagen, dass es nicht stimmt. Ich konnte auch keine Details in der offiziellen Qt-Dokumentation finden. Hat Qt also C-Bindungen oder nicht?

56
Ree

Kurze Antwort: Nein.

Wenn Sie ein umfassendes GUI-Toolkit für C benötigen, können Sie GTK + verwenden. 

Um Qt zu verwenden, haben Sie must einen C++ - Compiler. Das bedeutet jedoch nicht, dass Ihre "Anwendungslogik" nicht in C geschrieben, mit einem C-Compiler kompiliert und sorgfältig mit dem C++ - Teil (der GUI mit Qt) verknüpft werden kann. Diese Anwendungslogik kann generisch sein und mit anderen ausführbaren Dateien verknüpft werden (pure-C, gemischtes C/C++ usw.). Es hängt alles davon ab, was Sie benötigen.

Qt eignet sich jedoch hervorragend für C++, und es ist ein guter Grund, C++ für ein bestimmtes Projekt zu verwenden, auch wenn Sie noch Teile in C behalten möchten.

56
Eli Bendersky

Leider nicht, aber Sie können Ihr Programm als eine Reihe von Bibliotheken formen, die Ihrer Geschäftslogik entsprechen, und sie in C schreiben. Dann können Sie ein wenig C++ verwenden, um das, was Sie als Bibliothek geschrieben haben, mit einer grafischen Benutzeroberfläche mit QT zu verbinden.

Dies ist auch ein guter Ansatz, da Sie später Ihre Bibliothek wiederverwenden und viele andere Frontends mit anderen Toolkits oder Sprachen implementieren können!

20
Dacav

Nein, Qt ist C++. Sie können jedoch einfach überall Code im C-Stil schreiben, der keine GUI-Elemente erstellt und mit Ihrem C++ - Compiler Ihrer Wahl kompiliert.

18
Cory Petosky

Früher gab es eine Bindung namens QtC, aber die Suche danach enthüllt diesen Thread :

Von Richard Dale:

Ich pflegte C-Bindungen, die von Objective-C- und Qt # -Bindungen verwendet wurden. Aber die Smoke-Bibliothek ist viel besser, obwohl es keine C-Bindung ist und ich verschrottete die QtC-Bindungen, um stattdessen Rauch zu verwenden.

Rauch ist hier . Ich konnte nirgendwo einen klaren Hinweis auf die QtC-Bindungen finden, obwohl ich mich erinnere, dass ich davon gehört habe.

11
Sean McMillan

Ich glaube nicht, dass es so ist. Qt wird immer als "Klassenbibliothek" bezeichnet und erfordert die Erstellung von C++ - Compilern. Sie könnten versuchen, eine DLL/Schnittstelle zu schreiben/zu finden, die QT umgibt und eine API für eine C-Schicht bereitstellt.

4

Sie können immer einen C++ - Compiler verwenden, der einfach C++ in C übersetzt und dann die entstellten Namen ruft, die er erzeugt, usw. :-)

3
R..

Qt verwendet den Meta Object Compiler (MOC), um die Signal- und Slotmagie zum Laufen zu bringen (z. B. Funktionsrückrufe auf Grundlage von Benutzersignal- und Slotdefinitionen vornehmen). Daher ist Qt nicht wirklich C++, sondern Qts eigene Syntax, die C++ sehr ähnlich ist, jedoch mit Signalen und Slots. Dies macht 'externes' c 'unbrauchbar.

0
Brian