web-dev-qa-db-ja.com

qt qmlとqt quickの違い

QML、QtQuick 1.0、およびQtQuick 2.0と混同しています。それらの違いは何ですか?

Qt 5.1.1に基づいてQtCreator 2.8.1を使用しています。デスクトッププログラムを開発したいのですが、どのテクノロジーを使用すればよいですか?

63
骑天大圣

編集:より良い答えについては@TheBootrooを参照してください

私の回答はOPに受け入れられましたが、回答を修正(または削除)したいです。

私の答えは、2013年のQt 5.2に関する個人的な経験に基づいていましたが、その一部は今日では無効になっています。

  • QMLはQtメタ言語またはQtモデリング言語はユーザーインターフェイスマークアップ言語です。
  • QtQuick(QtQuick 1.xとQtQuick 2.xの両方)は、ユーザーインターフェイス中心のアプリケーションを設計するための宣言型言語としてQMLを使用します。

Qt 5.2に戻ってQt Quickアプリケーションを作成したとき、アプリがQtQuick 1.xかQtQuick 2.xかという重要な質問がありました。これは、使用可能なコンポーネントに影響を与えただけでなく、アプリケーションのレンダリング方法を変更しました。

2013年に戻る:

  • ButtonなどのQML UIコンポーネントはOSに固有のコンポーネントによってレンダリングされたため、古いオペレーティングシステム(Windows XPなど)または古いハードウェア(OLPCなど)をターゲットにする必要がある場合、QtQuick 1.xアプリケーションがしばしば選択されました。ただし、これは、UIコンポーネントの最も一般的な分母のセットをターゲットにしていることを意味し、UIエクスペリエンスはプラットフォームによって異なる場合があります。

  • QtQuick 2.xアプリケーションは、より一貫したクロスプラットフォームの外観を実現するために選択されましたが、それ以外のプラットフォームではOpenGLESを十分に実装する必要があり、アプリケーションの読み込みに失敗する場合があります。残念ながら、これはアプリケーションをOpenGLESを実装した最新のコンピューターとデバイスのみに制限していました。

元の答えを書いたとき、QtQuick 2.xよりもいくつかのシナリオでQtQuick 1.xを推奨するようになりました。

ただし、それ以降、Qt 5+では、WindowsでANGLEをターゲットにできるようになりました。これにより、呼び出しがDirect3Dに変換され、ドライバーサポートが大幅に向上し、Windowsデスクトップとの高性能なOpenGL互換性が実現します。

13
Stephen Quan

QMLは言語の名前です(C++と同様、別の言語です...)

QtQuickはQMLのツールキットで、QML言語でグラフィカルインターフェイスを開発できます(QMLには他のツールキットがあり、一部は Sailfish Silica または BlackBerry Cascade のようなグラフィカルで、一部は [〜#〜] qbs [〜#〜] のような非グラフィカルで、QMake/CMake/makeの代わりになります...)

QtQuick 1.xはQt4.xベースであり、QPainter/QGraphicsView AP​​Iを使用してシーンを描画しました。 QtQuick 2.Xは、高度に最適化されたOpenGLES2抽象化レイヤーScene Graphに基づいてQt5.0で導入されました。

Qt5.1では、Scene Graphはマルチスレッド(QtQuick 2.1)を使用するように拡張されました。Qt5.2では、Scene GraphはCPU/GPU呼び出しとメモリ使用量を削減するためにさらに最適化されています。

QMLエンジンは、Qt4.xのJsCore(WebkitのJSエンジン)に基づいており、5.0のV8(Google ChromeのJSエンジン)にリベースされましたが、これはモバイル、特にiOSでの使用を許可しないため、Qt5.2は新しいQtの人によって/のために作成された、V4VMという名前のQMLエンジン。

QtQuickコントロールもあります。これは基本的に、QtQuickに基づいたネイティブに見えるウィジェットのセットです。もともとはデスクトップ向けでしたが、Qt 5.4はホロテーマに基づいてAndroid向けのネイティブL&Fを導入しました。マテリアルテーマとiOSテーマは開発中ですが、現在のQtリリース(5.5)では利用できません。一部のコントロールはエンタープライズのみでしたが、Qt5.5ではエクストラとして名前が変更され、すべてのライセンスで使用できるようになりました。 Qt 5.6のTech Preview段階で、より良いパフォーマンスを得るために、コントロールを完全に書き直したQtQuickControls 2という名前の別の開発が行われています。

Qt5.5から、QtQuick3Dという名前の新しいモジュールがあり、QML言語を使用して3Dアプリ/ゲームを作成できます。 2D/2.4D指向のSceneGraphは使用しません。この使用のために、新しいエンジンにはFrameGraphという名前が付けられています。

最新のアプリを開発する場合は、Qt5.x + QML 2.x + QtQuick 2.xを使用して、可能な限り最も広範なユーザーベースに触れてください。

Qtでは、一般に、より多くの機能、パフォーマンス、プラットフォームが追加されるため、常に更新に従ってください。

161
TheBootroo