QT QML изменяет состояние c ++ - PullRequest
3 голосов
/ 24 мая 2011

У меня есть MouseArea, который вызывает сигнал, я подключаю этот сигнал к слоту, и он работает, мой код на С ++ работает.

Но возможно ли в коде на С ++ изменить состояние QML?

код кнопки, которая вызывает сигнал вызова (ОК):

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; }
    }
]

Я бы хотел, чтобы внутри моего слота (код С ++) изменилось состояниена "loginOK", это возможно?

Спасибо

1 Ответ

8 голосов
/ 24 мая 2011

Поскольку состояние является свойством элемента, вы можете изменить его следующим образом:

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, который, в свою очередь, устанавливает состояние. Например, как:

Файл C ++:

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

Файл QML:

...
MyItem {
     onStateChanged: {
         state: newState
     }
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...