it-swarm.com.de

Unterschied zwischen qt qml und qt quick

Ich bin mit QML, QtQuick 1.0 und QtQuick 2.0 verwechselt. Was ist der Unterschied zwischen ihnen?

Ich benutze QtCreator 2.8.1 basierend auf Qt 5.1.1. Ich möchte ein Desktop-Programm entwickeln, welche Technologie soll ich verwenden?

63
骑天大圣

BEARBEITEN: Bitte beziehen Sie sich auf @TheBootroo für eine bessere Antwort

Obwohl meine Antwort vom OP akzeptiert wurde, möchte ich meine Antwort überarbeiten (oder sogar entfernen).

Meine Antwort basierte auf persönlichen Erfahrungen in Bezug auf Qt 5.2 im Jahr 2013, von denen einige heute nicht mehr gültig sind:

  • QML ist Qt Meta Language oder Qt Modeling Language ist eine Markup-Sprache für die Benutzeroberfläche.
  • QtQuick (sowohl QtQuick 1.x als auch QtQuick 2.x) verwendet QML als deklarative Sprache für den Entwurf benutzeroberflächenzentrierter Anwendungen.

Bei der Erstellung einer Qt-Schnellanwendung in Qt 5.2 stellte sich die wichtige Frage, ob die App QtQuick 1.x oder QtQuick 2.x war. Dies wirkte sich nicht nur auf die verfügbaren Komponenten aus, sondern veränderte auch die Darstellung der Anwendung.

Zurück im Jahr 2013:

  • QtQuick 1.x-Anwendungen wurden häufig ausgewählt, wenn Sie auf ältere Betriebssysteme (z. B. Windows XP) oder ältere Hardware (z. B. OLPC) abzielen mussten, da die Komponenten der QML-Benutzeroberfläche, z. B. Schaltflächen, von systemeigenen Komponenten gerendert wurden. Dies bedeutete jedoch, dass Sie auf einen Satz von Benutzeroberflächenkomponenten mit dem niedrigsten gemeinsamen Nenner abzielten und dass Ihre Benutzeroberflächenerfahrung von Plattform zu Plattform variieren kann.

  • QtQuick 2.x-Anwendung wurde für ein konsistenteres plattformübergreifendes Erscheinungsbild ausgewählt. Voraussetzung ist jedoch, dass Ihre Plattform OpenGLES ausreichend implementiert hat. Andernfalls kann Ihre Anwendung möglicherweise nicht geladen werden. Dies hat Ihre Anwendung leider nur auf die neuesten Computer und Geräte beschränkt, die OpenGLES implementiert haben.

Als ich meine ursprüngliche Antwort schrieb, empfahl ich QtQuick 1.x in einigen Szenarien gegenüber QtQuick 2.x.

Seitdem können Sie mit Qt 5+ jedoch ANGLE unter Windows als Ziel festlegen, um Windows-Desktops mit OpenGL-Hochleistungskompatibilität zu versorgen, indem Sie Anrufe in Direct3D übersetzen, das wesentlich bessere Treiberunterstützung bietet.

13
Stephen Quan

QML ist der Name der Sprache (genau wie C++, eine andere Sprache ...)

QtQuick ist ein Toolkit für QML, mit dem grafische Oberflächen in QML-Sprache entwickelt werden können (es gibt andere Toolkits für QML, einige sind grafisch wie Sailfish Silica oder BlackBerry Cascade und einige sind es nicht-grafisch wie QBS das ist ein Ersatz für QMake/CMake/make ...)

QtQuick 1.x basierte auf Qt4.x und verwendete die API QPainter/QGraphicsView, um die Szene zu zeichnen. QtQuick 2.X wurde mit Qt5.0 eingeführt, basierend auf Scene Graph, einer hochoptimierten OpenGLES2-Abstraktionsebene.

Mit Qt5.1 wurde Scene Graph für die Verwendung von Multithreading erweitert (QtQuick 2.1). Mit Qt5.2 wurde Scene Graph noch viel weiter optimiert, um die CPU-/GPU-Aufrufe und die Speichernutzung zu reduzieren

Die QML-Engine basierte auf JsCore (JS-Engine von Webkit) in Qt4.x und wurde auf V8 (JS-Engine von Google Chrome) mit 5.0 umbasiert, jedoch nicht auf Mobiltelefonen und insbesondere auf iOS. Daher führte Qt5.2 eine neue ein QML-Engine namens V4VM, erstellt von/für Qt-Leute.

Es gibt auch die QtQuick-Steuerelemente, bei denen es sich im Grunde um eine Reihe nativ aussehender Widgets handelt, die auf QtQuick basieren. Es war ursprünglich für den Desktop gedacht, aber in Qt 5.4 wurde ein natives L & F für Android eingeführt, das auf dem Holo-Thema basiert. Ein Material-Theme sowie ein iOS-Theme sind in der Entwicklung, jedoch ab der aktuellen Qt-Version (5.5) nicht verfügbar. Einige Steuerelemente waren nur Enterprise-Steuerelemente, wurden jedoch in Qt5.5 in Extras umbenannt und sind jetzt für alle Lizenzen verfügbar. Eine weitere Entwicklung mit dem Namen QtQuickControls 2, bei der es sich um eine vollständige Umschreibung von Steuerelementen handelt, soll in Qt 5.6 in der Phase der technischen Vorschau durchgeführt werden, um eine bessere Leistung für eingebettete Benutzeroberflächen zu erzielen.

Ab Qt5.5 gibt es ein neues Modul namens QtQuick3D, mit dem 3D-Apps/-Spiele in QML-Sprache erstellt werden können. Es wird kein zu 2D/2.4D-orientierter SceneGraph verwendet. Eine neue Engine heißt für diese Verwendung FrameGraph.

Wenn Sie moderne Apps entwickeln, sollten Sie Qt5.x + QML 2.x + QtQuick 2.x verwenden, um die größtmögliche Nutzerbasis zu erreichen.

Befolgen Sie bei Qt im Allgemeinen immer die Aktualisierungen, da sie mehr Funktionen, mehr Leistungsmerkmale und mehr Plattformen hinzufügen.

161
TheBootroo