QStateMachine 它是如何工作的
QStateMachine how it works
我创建了 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 分配不同的场景配置?
您在这里拥有 QWidget
的所有属性:http://doc.qt.io/qt-5/qwidget.html#properties
每个 child class 也有自己的附加属性,这些都在文档中。
所以你可以这样做:
aspetto_G1_primo->assignProperty(object1, "visible", false);
然后当进入该状态时,object1
的 属性 "visible" 将被设置为 false
。
您也可以根据状态(例如几何图形、样式表或标签文本)编辑 任何 其他 属性。 .
我创建了 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 分配不同的场景配置?
您在这里拥有 QWidget
的所有属性:http://doc.qt.io/qt-5/qwidget.html#properties
每个 child class 也有自己的附加属性,这些都在文档中。
所以你可以这样做:
aspetto_G1_primo->assignProperty(object1, "visible", false);
然后当进入该状态时,object1
的 属性 "visible" 将被设置为 false
。
您也可以根据状态(例如几何图形、样式表或标签文本)编辑 任何 其他 属性。 .