C
Qt Quick ウルトラライトスタイリング例
Qt Quick Ultralite でスタイルを使用する方法を示します。
概要
この例では、カスタムQtQuick.Controls スタイルを定義して使用する方法を示します。同じコードを2回コンパイルします。1回はデフォルト・スタイルでstyling_default 、もう1回はカスタム・スタイルでstyling_custom 。スタイルの切り替えは、プロジェクトのCMakeLists.txt でのみ行われます。
カスタム・スタイルの詳細については、スタイリング・コントロール を参照してください。


プロジェクトの構造
CMakeプロジェクトファイル
CMakeLists.txt ファイルには2つのターゲットが定義されています:
... qul_add_target(styling_default QML_PROJECT styling_default.qmlproject GENERATE_ENTRYPOINT) app_target_setup_os(styling_default) ...
最初のターゲットはデフォルトのスタイルを使用し、次のようにリンクされています。Qul::Controls
... # qul_add_target(styling_custom QML_PROJECT styling_custom.qmlproject GENERATE_ENTRYPOINT) # app_target_setup_os(styling_custom) ...
2番目のターゲット (styling_custom) はstyles/custom ディレクトリのスタイルを使用します。これはCustomControls にリンクされており、MCU.Config.controlsStyle QmlProject プロパティとしても設定されています。これら2つの操作により、デフォルトのスタイルがそのURIを通じてCustomControls に切り替わります。
CustomControls スタイルには独自の QmlProject ファイルがあります:
MCU.Module {
uri: "CustomControls"
}
QmlFiles {
files: ["Button.qml", "CheckBox.qml"]
}
ModuleFiles {
MCU.qulModules: [
"Qul::ControlsTemplates",
// This style links StyleDefault because one of the components is based
// on a default style component. If it didn't depend on the default style
// that would be unnecessary.
"Qul::Controls"
]
}
}CustomStyleLib CustomControls Qul::Controls CheckBox.qml CheckBox がゼロから実装されるのであれば、このライブラリへのリンクは必要ないでしょう。
デフォルトのスタイル
このstyling.qml ファイルはQtQuick.Controls モジュールの QML 型を使用しています。styling_default ターゲットでは、Qul::Controls ライブラリから定義が取られています。styling_custom 、CustomStyleLib のオブジェクトが使用されます。
カスタムスタイル
Button.qml とCheckBox.qml ファイルは、Button とCheckBox コントロールをカスタムスタイルで再実装しています。
import QtQuick 2.15 import QtQuick.Controls.StyleDefault 1.0 as Base Base.CheckBox { id: control indicator: Rectangle { x: control.leftPadding y: control.topPadding + (control.availableHeight - height) / 2 width: control.availableHeight / 2 height: control.availableHeight / 2 radius: width / 2 color: !control.enabled ? "gray" : (control.checked ? "green" : "red") } }
たとえば、CheckBox インジケータは、デフォルト・スタイルを使用するCheckBox コントロールとは異なります。これは、新しい円形インジケータを使用しています。
ファイル