【发布时间】:2016-06-07 16:10:23
【问题描述】:
这是我的简单代码:
我创建了一个新的scene、view 和QPixmapItem
QGraphicsScene *scena = new QGraphicsScene();
QGraphicsPixmapItem *object1= new QGraphicsPixmapItem();
object1->setPixmap(QPixmap(":/prova/prova.png"));
QGraphicsView *view = new QGraphicsView();
view->setScene(scena);
scena->addItem(object1);
view->show();
接下来我创建了一个新的QStateMachine 和两个QState
QStateMachine *machine = new QStateMachine();
QState *s1 = new QState();
QState *s2 = new QState();
machine -> addState(s1);
machine -> addState(s2);
//mouse click in a void mousePressEvent
s1 -> addTransition(this,SIGNAL(mouseclick()),s2);
machine -> start();
我想在
s1中显示view并设置object1可见。通过在场景上单击鼠标,我添加了到
s2的过渡。在
s2我只想隐藏object1。
我该怎么做?有人可以帮我做一个小教程吗?
我正在使用带有 MinGW 4.9.2 32 位的 Qt 5.6.0。
【问题讨论】:
-
你读过this answer吗?看起来你一遍又一遍地问非常相似的问题......
-
是的,我已经阅读了答案,我意识到我不能将
view分配给QState。我的问题是我有一个scene,在那个scene里面我有QGraphicsPixmapObject。这是一个纸牌游戏,所以我必须隐藏和显示该对象 20 次,而我不能用for来做到这一点,所以你告诉我使用QStateMachine。现在我创建了QState和QStateMachine,但我无法使用它。我使用signals添加了从s1到s2的转换,现在我要指定要在每个QState中显示的对象。有可能吗? -
"我必须隐藏和显示该对象 20 次" 同一个?你的意思是你希望它闪烁 20 次?或者您希望按顺序显示 20 个不同的对象?
-
这是一款纸牌游戏,所以我在场景中有 10 个
QGraphicsPixmapItem。要玩我想展示牌的游戏,等待玩家选择,然后将那张牌移到场景中心。之后我想重新加载以前的情况并重复同样的事情20次 -
您可能并不关心鼠标点击。你关心一张卡片被选中,然后你移动它。图形视图框架已经将鼠标单击项目解释为项目选择。你真的对如此低级的细节很感兴趣,但从不解释你希望你的游戏如何工作。当鼠标在场景中按下时,你永远不想切换状态。您想使用鼠标选择一张卡片,然后对该选择做出反应,或者至少您想对鼠标单击项目做出反应,而不是场景/视图!这是一个很大的不同!
标签: c++ qt qt5 qgraphicsscene qstatemachine