web-dev-qa-db-ja.com

Qt5(QML)でのui.qmlファイルの用途は何ですか?

私が見る限り、.qmlファイルを使用してUIを定義できます。これは、ui.qmlファイルに書き込まれているものをすべてオーバーライドしているようです。では、ui.qmlファイルの使用は正確には何ですか?

QtCreatorでQt5を使用しています。

16
user3927312

.ui.qmlファイルは、Qt QuickDesignerを支援するために存在します。たとえば、通常のQMLファイルにはJavaScript式を含めることができますが、Qt QuickDesignerでこれらを操作するのは困難です。一方、プレーンQMLはそれほど難しくはなく、.uiファイルと同等のウィジェットに近いものです。これは、ユーザーインターフェイスの一連のアイテムの詳細を示すドキュメントであり、その背後にあるロジックはそれほど多くありません。

機能 数年前にブログで提案されました

従来のウィジェットデザイナは、宣言型と命令型ロジックの違いを中心に構築されています。宣言型は設計可能であり、.uiファイルに保存されます。

Qmlでは、宣言型コードと命令型コードを簡単に組み合わせることができます。 Qmlファイルに命令型の命令(視覚的な側面に影響を与える)を追加すると、それらはもはや純粋に宣言型ではなくなり、ビジュアルエディターでの視覚的な表現が壊れます。ビジュアルエディターには、ビジュアルの説明をテキストの説明に戻す方法が必要です。命令型コードの場合、これは一般的に不可能であり、Qt QuickDesignerは試行すらしません。

QMLドキュメント ドキュメントの状態:

Qt 5.4以降、ドキュメントのファイル拡張子は「.ui.qml」にすることもできます。 QMLエンジンは、これらのファイルを標準の.qmlファイルと同様に処理し、拡張子の.ui部分を無視します。 Qt Creatorは、これらのファイルをQt QuickDesignerのUIフォームとして処理します。ファイルには、QtCreatorによって定義されたQML言語のサブセットのみを含めることができます。

QtクイックUIフォーム

Qt Creatorウィザードを使用して、ファイル名拡張子が.ui.qmlのUIフォームを作成できます。 UIフォームには、QML言語の純粋に宣言型のサブセットが含まれています。デザインモードでフォームを編集することをお勧めします。ただし、アイテムをエイリアスプロパティとしてエクスポートすることは商用のみの機能であるため、オープンソースバージョンのQt Creatorを使用している場合は、編集モードを使用してエクスポートする必要があります。 Qt Creatorは、エラーメッセージを表示することにより、サポートされているQML機能の使用を強制します。

次の機能はサポートされていません。

  • JavaScriptブロック
  • 関数の定義
  • 関数呼び出し(qsTrを除く)
  • 純粋な式以外のバインディング
  • シグナルハンドラー
  • ルートアイテム以外のアイテムの状態
  • QQuickItemまたはItemから派生していないルートアイテム

次のタイプはサポートされていません。

  • 動作
  • 製本
  • キャンバス
  • 成分
  • シェーダー効果
  • タイマー
  • 変換
  • 遷移
27
Mitch