Hinweis : In dieser Antwort bezieht sich "Qt-Widgets" auf eine Qt-Widgets-Anwendung, die beim Erstellen einer neuen Qt-Anwendung ausgewählt werden kann.
Dies ist sieben Jahre, nachdem die Frage zum ersten Mal gestellt wurde ... aber hier ist mein " Ziel ", zwei Cent, um jegliche Entwicklungen seitdem zu neutralisieren.
Eine Auffrischung
Sprache
Qt Quick-Projekte verwenden QML und JavaScript .
Qt Widgets-Projekte verwenden C ++ - Code. (PyQt und PySide, Python-Bindungen für Qt, verwenden Python.)
Leistung und Codierung
Daher können Qt-Widgets im Vergleich zu Qt Quick als niedrig eingestuft werden. Dies bedeutet jedoch, dass ein Qt Widgets-Projekt auf lange Sicht schneller ausgeführt wird und eine bessere Leistung aufweist. Low-Level zu sein kann jedoch gut sein, da Qt Widgets stärker der nativen API (dem QtCore-Modul , Qt Style Sheets usw.) ausgesetzt sind . Das heißt, es wird oft für die Desktop-Entwicklung verwendet.
Qt Quick ist eher auf die mobile Entwicklung ausgerichtet (obwohl es weiterhin in der Desktop-Entwicklung verwendet werden kann). Es verfügt über einsatzbereite Popups , Animationen , Registerkarten und Layouts, flickbare Elemente , Schubladen und die üblichen Steuerelemente. alles allgegenwärtig in der mobilen Entwicklung.
UI-Design
Beide haben ui
Dateien, die mit QtDesigner zusammenarbeiten und eine allgemeine Ansicht zum Festlegen von Layouts und zum Erstellen von Schnittstellen bieten. (In Qt Quick sind Erweiterungen vorhanden .ui.qml
. In Qt Widgets sind sie vorhanden .ui
.) Die .ui
Dateien sind weder obligatorisch noch erforderlich: Sie haben die Wahl, Design und Layouts programmgesteuert mit QML / JS oder C ++ / Python auszuführen.
Lernen
Wenn Sie mit dem Programmieren noch nicht vertraut sind, sollten Sie sich zuerst Qt Quick ansehen. Persönlich denke ich, dass Qt Quick eine sanftere Lernkurve hat und einfacher zu bearbeiten ist, um unzählige Projekte durchzuführen. Es heißt aus einem bestimmten Grund "Qt Quick ". (Schauen Sie nicht auf Qt Widgets herab, sie haben einige nette Module, die QtQuick übertreffen.)
Wenn Sie jedoch die Programmierung mit C sind ++ oder vor Python, ich würde vorschlagen , einen Blick auf Qt Widgets nimmt zunächst gewöhnungs ihre Signale und Slot - Mechanismus und Module , die Sie (zB interessieren könnten sql
, network
, gui
) neben der Programmierung Design (zB Modell- / Ansichtsprogrammierung zur Anzeige von Daten).
Insbesondere bei C ++, den meisten Nicht-Qt-Bibliotheken, die Ereignisbehandlungsschleifen verwenden while
, ist dies bei Qt nicht der Fall. Sie verwenden Signale und Slots .
Selbst wenn Sie hauptsächlich Qt-Widgets verwenden, sollten Sie sich Qt Quick ansehen, da es eine deklarative Hochsprache für die Arbeit bietet und es Ihnen ermöglicht, Dinge schneller einzurichten. (Speziell für die mobile Entwicklung.)
Qt bietet zahlreiche Beispiele für Qt Quick- und Qt Widget- Projekte sowie ein Forum . Sie sollten sich auf lange Sicht keine Sorgen machen, Hilfe zu bekommen. (StackOverflow nicht vergessen!)
Qt Quick + Qt Widget
Bisher haben wir sie wie separate Einheiten behandelt. Es ist jedoch möglich, QML in C ++ zu integrieren . Auf diese Weise können Sie Qt Widget, C ++ und andere Module nutzen. Zum Beispiel bietet QtQuick ein, TreeView
aber kein TreeModel
, das aus C ++ in QML registriert werden kann / sollte. Oft gibt es eine Trennung der Bedenken , wobei Qt empfiehlt, Programme in UI und Logik in QML bzw. C ++ zu trennen.
Dies ist auch praktisch, wenn Sie beispielsweise ein Backend für intensive SQL-Abfragen, Algorithmen oder asynchrone http / xml-Anforderungen benötigen . Ist das nicht cool? QML / JS-Frontend plus ein C ++ - Backend. Fullstack Qt'er. :-)
(Was ich nicht ausprobiert habe, ist ein Python-Backend. Ich habe PyQt noch nicht berührt ...)