Qt:5.10新しい特性、QMLで列挙を定義する
2104 ワード
Qtは5.5から始まり、C++で列挙を定義することをサポートします.Q_を採用ENUMキーワードは、QML用にカスタム列挙をメタオブジェクトシステムに登録します.
これ、正直、めんどくさい、めんどくさい、めんどくさい、うん、めんどくさいことを3回言うんだ.
長い間、C++に関わりたくない状況で、私自身がQMLプログラムを開発したのは文字列で列挙していました.例えば「XxxxStyle」です.
この問題は、ついに5.10で解決した.5.10では、QMLで列挙値をカスタマイズできます.
MyRectangle.qml
ここでは、RedStyle、GreenStyle、BlueStyleの3つの属性を持つ列挙をカスタマイズしました.列挙値を受信するためにcurrentStyleが同時に存在します.
使用する場合は、現在のQML内でも外部でも
最後にこのMyRectangleはこのように使用できます.
全体的には、以前よりC++で登録し、QMLで使用する方法が多く便利になりました.でも!私はツッコミを入れなければなりません.5.10に持参したQtCreatorがenumキーワードを正しく認識できず、QMLファイル全体が正常にハイライトされません.後のバージョンが改善されるのを待つしかありません.
これ、正直、めんどくさい、めんどくさい、めんどくさい、うん、めんどくさいことを3回言うんだ.
長い間、C++に関わりたくない状況で、私自身がQMLプログラムを開発したのは文字列で列挙していました.例えば「XxxxStyle」です.
この問題は、ついに5.10で解決した.5.10では、QMLで列挙値をカスタマイズできます.
MyRectangle.qml
import QtQuick 2.10
Rectangle {
id: myRectangle
width: 100
height: 100
color: {
switch ( currentStyle )
{
case MyRectangle.Style.RedStyle: return "#ff0000";
case MyRectangle.Style.GreenStyle: return "#00ff00";
case MyRectangle.Style.BlueStyle: return "#0000ff";
default: return "#00000000";
}
}
enum Style {
RedStyle,
GreenStyle,
BlueStyle
}
property int currentStyle: MyRectangle.Style.RedStyle
}
ここでは、RedStyle、GreenStyle、BlueStyleの3つの属性を持つ列挙をカスタマイズしました.列挙値を受信するためにcurrentStyleが同時に存在します.
使用する場合は、現在のQML内でも外部でも
QML . .
のルールに従って使用します.最後にこのMyRectangleはこのように使用できます.
MyRectangle {
currentStyle: MyRectangle.Style.GreenStyle
}
全体的には、以前よりC++で登録し、QMLで使用する方法が多く便利になりました.でも!私はツッコミを入れなければなりません.5.10に持参したQtCreatorがenumキーワードを正しく認識できず、QMLファイル全体が正常にハイライトされません.後のバージョンが改善されるのを待つしかありません.