3

私は信号を呼び出す MouseArea を持っています。この信号をスロットに接続すると動作し、私の C++ コードが実行されています。

しかし、C++ コード内で QML 状態を変更することは可能ですか?

信号(OK)を呼び出すボタンのコード:

MouseArea {
                    anchors.fill: parent
                    onClicked: {
                        inscriptionCarre.qmlSignalButtonInscription("Button");
                    }
                }

私の州のコード:

states: [
    State {
        name: "start";
        PropertyChanges { target: home; x: -master.width; }
        PropertyChanges { target: login; x:0; }
    },
    State {
        name: "loginOK";
        PropertyChanges { target: login; x: -master.width; }
        PropertyChanges { target: liste; x:0; }
    }
]

スロット (C++ コード) 内で状態を「loginOK」に変更したいのですが、可能ですか?

ありがとう

4

1 に答える 1

8

状態はアイテムのプロパティであるため、次のように変更できます。

QDeclarativeEngine engine;
QDeclarativeComponent component(&engine, "MyItem.qml");
QObject *object = component.create();
object->setProperty("state", "loginOK");

参照: http: //qt-project.org/doc/qt-4.8/qtbinding.html#modifying-properties

または、C ++スロットから、状態文字列をQMLスロットに渡す信号を送信してQMLスロットに状態を設定することもできます。たとえば、次のようになります。

C ++ファイル:

...
signals:
     void stateChanged(const QString &newState);
...

QMLファイル:

...
MyItem {
     onStateChanged: {
         state: newState
     }
}
...
于 2011-05-24T14:20:30.513 に答える