web-dev-qa-db-ja.com

QtとQML言語の関連性

ですから、私はQtの初心者であり、Qtグラフィックスに慣れることを目的としています。ただし、インターネット上のほとんどのガイドでは、グラフィックスの処理に関しては、Qt C++ではなくQMLを使用することを推奨しています。

これが私の質問です:Qt C++とQMLの違いは何ですか? QMLは何を提供しますが、Qt C++は提供しませんか?

6
HarvyD

UIテクノロジー

実際には、QMLとC++の問題ではなく、Qtで使用するUIテクノロジーの問題です。

  • QtWidgets(C++で記述されたコード)
  • QtQuick(QML/JSで記述されたコード)
  • HTML5(WebEngine経由、ウィジェットまたはQtQuickアイテムに埋め込まれています)
  • OpenGL(ウィジェットまたはQtQuickアイテムに埋め込まれています)

HTML5とOpenGLは別として、QtWidgets vs QtQuickの質問は、他の場所で議論されています。たとえば、 Qt Quick vs. Qt Widget およびこの Qt DevDays 2014プレゼンテーション です。

私の個人的な意見:特に理由がない限り、従来のデスクトップアプリケーションにはQtWidgetsを使用し、モバイルおよび組み込み(タッチスクリーンを備えたデバイス)にはQtQuickを使用します。 QtWidgetsは、従来のデスクトップコントロールをより適切に、より成熟してサポートしますが、QtQuickは、アニメーションと完全にカスタムのスタイル設定に適しています。

デスクトップでQtQuickを使用する理由の1つは、ツールバー、メニューバー、ドラッグアンドドロップなどの従来のデスクトップコントロールともう少し戦うことを犠牲にして、多くのカスタムアニメーションとスタイリングが必要な場合です。

言語

QtWidgets、を選択する場合、言語は常にC++です(Pythonバインディングを使用しない限り))。 Qt Designerツール を使用してUIを視覚的に作成し、最終的にそれらをC++にコンパイルします。

QtQuick、を選択すると、UIパーツの言語はQMLとJavaScriptになります。ただし、適度に大きなQtQuickアプリケーションでは、ある時点でC++部分もあります。たとえば、他のCおよびC++ライブラリとのインターフェイス、JavaScript APIが関連付けられていない操作、または単により速く、より保守しやすいコードJSより。 C++のクラスとオブジェクトにはQMLからアクセスできます。詳細については、 ドキュメント を確認してください。

20
Thomas McGuire