Hat Qt eine C-Schnittstelle?

Lesezeit: 2 Minuten

Ich habe widersprüchliche Antworten im Internet gefunden – einige sagen, dass es so ist, andere sagen, dass es nicht so ist. Auch in der offiziellen Qt-Dokumentation konnte ich keine Details finden. Hat Qt also C-Bindungen oder nicht?

Benutzeravatar von Eli Bendersky
Eli Bendersky

Kurze Antwort: nein.

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

Um Qt zu verwenden, müssen Sie muss einen C++-Compiler haben. Aber das bedeutet 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 (reines C, gemischtes C/C++ usw.). Es hängt alles davon ab, was Sie brauchen.

Qt eignet sich jedoch hervorragend für C++ und ist ein guter Grund, sich für die Verwendung von C++ für ein bestimmtes Projekt zu entscheiden, selbst wenn Sie Teile in C behalten möchten.

Leider nicht, aber Sie können Ihr Programm als Satz von Bibliotheken formen, die Ihre Geschäftslogik erreichen, und sie in C schreiben, dann können Sie ein wenig C++ verwenden, um das, was Sie geschrieben haben, mit QT als Bibliothek mit einer GUI zu verbinden.

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

Nein. Qt ist C++. Aber Sie könnten einfach überall Code im C-Stil schreiben, der nicht mit GUI-Elementen interagiert/erzeugt, und das Ganze mit Ihrem C++-Compiler Ihrer Wahl kompilieren.

Benutzeravatar von Sean McMillan
Sean McMillan

Früher gab es eine Bindung namens QtC, aber die Suche danach zeigt dieser Faden:

Von Richard Dale:

Früher habe ich C-Bindungen verwaltet, die von Objective-C- und Qt#-Bindungen verwendet wurden. Aber die Smoke-Bibliothek ist viel besser, obwohl es keine C-Bindung ist, und ich habe die QtC-Bindungen verschrottet, um stattdessen Smoke zu verwenden.

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

Ich glaube nicht. Qt wird immer als „Klassenbibliothek“ beschrieben und erfordert zum Erstellen C++-Compiler. Sie könnten versuchen, eine DLL/Schnittstelle zu schreiben/zu finden, die QT umschließt und eine API für eine C-Schicht bereitstellt.

R.. GitHub STOP HELPING ICEs Benutzeravatar
R.. GitHub HÖREN SIE AUF, ICE ZU HELFEN

Sie könnten immer einen C++-Compiler verwenden, der C++ einfach in C übersetzt und dann die von ihm generierten entstellten Namen aufruft usw. 🙂

Brians Benutzeravatar
Brian

Qt verwendet den Meta Object Compiler (MOC), um die Signal- und Slot-Magie zum Laufen zu bringen (z. B. Funktionsrückrufe basierend auf Benutzersignal- und Slot-Definitionen zu erstellen). Qt ist also nicht wirklich C++, sondern wirklich Qts eigene Syntax, die C++ sehr ähnlich ist, aber mit Signalen und Slots. Das macht „externes „c““ nutzlos.

1415780cookie-checkHat Qt eine C-Schnittstelle?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy