Ich habe widersprüchliche Antworten im Internet gefunden - einige sagen, es tut, manche sagen, es nicht. Ich konnte auch keine Details in der offiziellen Qt-Dokumentation finden. Hat Qt also C-Bindungen oder nicht?Hat Qt eine C-Schnittstelle?
Antwort
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 einen C++ - Compiler haben. Aber es 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 in andere ausführbare Dateien (pure-C, gemischtes C/C++ usw.) eingebunden werden. Alles hängt davon ab, was Sie brauchen.
Qt für C++ ist sehr gut, aber, und es ist ein guter Grund, mit C++ für ein bestimmtes Projekt zu entscheiden, auch wenn Sie noch Teile behalten wollen in C.
Ich glaube nicht, dass es so ist. Qt wird immer als "Klassenbibliothek" beschrieben und erfordert C++ - Compiler zum Erstellen. Sie könnten versuchen, eine DLL/Schnittstelle zu schreiben/zu finden, die QT umschließt und eine API für eine C-Schicht bereitstellt.
Nein. Qt ist C++. Aber Sie könnten einfach überall C-Code schreiben, der nicht mit GUI-Elementen interagiert/erstellt und das Ganze mit Ihrem C++ - Compiler Ihrer Wahl kompiliert.
Es verwendet eine Bindung genannt QTC werden, aber für sie die Suche zeigt this thread:
von Richard Dale:
ich verwendete C-Bindungen zu pflegen, die von Objective-C und Qt # Bindungen verwendet wurden. Aber die Rauchbibliothek ist viel besser, obwohl es keine C-Bindung ist, und ich habe die QtC-Bindungen verschrottet, um stattdessen Rauch zu verwenden.
Smoke is here. Ich konnte nirgends eine klare Referenz zu den QtC-Bindungen finden, obwohl ich mich erinnere, von ihnen zu hören.
Sie immer einen C++ Compiler, einfach übersetzt C++ zu C, dann rufen Sie die entstellten Namen usw. erzeugt es :-) Leider nicht,
verwenden könnte, aber Sie können Ihr Programm als Satz von Bibliotheken prägen achiving Ihre Geschäftslogik und schreiben Sie sie in C, dann können Sie ein wenig C++ verwenden, um das, was Sie als Bibliothek geschrieben haben, mit einer GUI zu verbinden, die QT verwendet.
Dies ist ein guter Ansatz auch, weil Sie später Ihre Bibliothek wiederverwenden und viele andere Front-Ends mit verschiedenen Toolkits oder Sprachen implementieren können!
Qt verwendet den Meta-Objekt-Compiler (MOC), um die Signal- und Slot-Zauberarbeit zu leisten (z. B. Funktionsrückrufe basierend auf Benutzersignal- und Slot-Definitionen). Qt ist also kein aktuelles C++, aber es ist wirklich Qt's eigene Syntax, die ähnlich wie C++ ist, aber mit Signalen und Slots. Dies macht 'extern' c '' nutzlos.
- 1. Hat Qt 4.5 Skins?
- 2. Hat Qt eine Möglichkeit, die Begrenzungsbox eines Bildes zu finden?
- 3. Welche Bedeutung hat Q_PROPERTY in Qt?
- 4. Eine externe Ereignisschleife mit Qt
- 5. QT hochladen (PUT) eine Datei
- 6. C++ Fehler in Qt: hat Initialisierer, aber unvollständiger Typ
- 7. Qt QTableView, wie eine Checkbox nur Spalte
- 8. Eine qt Gui Anwendung programmatisch sauber schließen
- 9. Hat Fortran eine Standardbibliothek?
- 10. Hat Python eine Synchronisierung?
- 11. Hat Dictionary.Equals() eine Implementierung?
- 12. Hat GCC eine GUI?
- 13. Hat file_get_contents() eine Zeitüberschreitung?
- 14. Hat C++ eine Standardwarteschlange?
- 15. Hat Buffer eine Vergleichsmethode?
- 16. Hat WebSockets eine Durchsatzgrenze?
- 17. Hat Python eine Seildatenstruktur?
- 18. Hat AppleScript eine Ersetzungsfunktion?
- 19. hat Mallet eine GUI?
- 20. Magento hat eine Umleitungsschleife
- 21. Hat Kotlin eine Identitätsfunktion?
- 22. QT QFileSystemWatcher
- 23. Wie man eine Listview in Qt
- 24. Emacs in eine Qt-Anwendung eingebettet
- 25. eine Beschreibung in einem qt exe
- 26. Erstellen Sie eine Textdatei für Qt
- 27. Kompilieren Sie eine Datei in QT Creator
- 28. Qt C++ XML, Validierung gegen eine DTD?
- 29. Probleme eine Bibliothek in Qt Creator
- 30. Wie führe ich eine Qt-Anwendung aus?
... schlecht Idee: Wenn Sie mit einem anderen Compiler arbeiten, können Sie feststellen, dass der Name Mangling anders ist. Oder gibt es einen Stardard für Mangling? – Dacav
Wenn Sie nur den C++ - Code (Qt) nach C "kompilieren", können Sie von nun an den generierten C-Code als "Quelle" behandeln. Wenn Sie nicht zurückgehen, um es neu zu generieren, ist der Compiler, der es erzeugte, nicht mehr relevant. Allerdings soll diese Antwort nicht zu ernst genommen werden, aber ich glaube, es ist trotzdem eine richtige Antwort. –
Warum verfälschte Namen verwenden? Jeder vernünftige C++ - Compiler sollte die "extern" C "-Anweisung verstehen, besonders wenn er in C-Quelle kompiliert wird. (Btw, welcher C++ - Compiler kann C-Code ausgeben?) – schoppenhauer