QStateMachine, как это работает
Я создал 4 разных QState, и я хочу скрыть один объект в каждом переходе между состояниями.
Это код:
QStateMachine partita;
QState *inizio_mano = new QState();
QState *aspetto_G1_primo = new QState();
QState *aspetto_G1_secondo = new QState();
QFinalState *fine_mano = new QFinalState();
partita.setInitialState(inizio_mano);
inizio_mano -> addTransition(this,presa==true,aspetto_G1_primo);
inizio_mano -> addTransition(this,presa==false,aspetto_G1_secondo);
aspetto_G1_primo -> addTransition(this,stato==true,fine_mano);
aspetto_G1_secondo -> addTransition(this,stato==true,fine_mano);
presa
а также stato
два bool
Я изменяюсь в следующем шаге программы.
Теперь у меня есть QGraphicsScene
и в сцене я добавил в нее некоторые QGraphicsPixmapItem
,
Например, я хочу обновить сцену, скрывающую элемент:
if(presa==true) {object1->hide();}
Я понимаю, что я должен изменить QState (в этом случае от inizio_mano
в aspetto_G1_primo
), и я сделал это, добавив переход.
Но как я могу скрыть этот предмет?
Как я могу подключить QState aspetto_G1_primo
с object1 -> hide();
Надеюсь, я правильно объяснил.
Моя главная проблема: как мне назначить каждому QState свою конфигурацию сцены?
1 ответ
У вас есть все свойства QWidget
здесь: http://doc.qt.io/qt-5/qwidget.html
Каждый дочерний класс также имеет свои собственные дополнительные свойства, которые есть в документе.
Так что вы можете сделать:
aspetto_G1_primo->assignProperty(object1, "visible", false);
Затем при входе в это состояние свойство "видимое" object1
будет установлен в false
,
Вы также можете сделать то же самое, чтобы отредактировать любое другое свойство в зависимости от состояния, например геометрию, таблицу стилей или текст меток...