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,

Вы также можете сделать то же самое, чтобы отредактировать любое другое свойство в зависимости от состояния, например геометрию, таблицу стилей или текст меток...

Другие вопросы по тегам