dies ist meine einfache Code ein- und ausblenden:QStateMachine wie QGraphicsView und QObject in verschiedenen QSTATE
Ich habe erstellt ein neues scene
, view
und 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();
und nächstes habe ich erstellt ein neue QStateMachine
mit zwei 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();
Ich möchte die
view
ins1
anzeigen undobject1
sichtbar machen.Mit einem Mausklick auf die Szene habe ich einen Übergang zu
s2
hinzugefügt.In
s2
möchte ich nurobject1
verstecken.
Wie kann ich das tun? Jemand kann mir mit einem kleinen Tutorial helfen?
Ich verwende Qt 5.6.0 mit MinGW 4.9.2 32bit.
Haben Sie [diese Antwort] (http://stackoverflow.com/a/37667951/1329652) gelesen? Es sieht so aus, als ob du immer wieder ähnliche Fragen stellst ... –
Ja, ich habe die Antwort gelesen und festgestellt, dass ich einem 'QState' keine' Ansicht' zuordnen kann. Mein Problem ist, dass ich eine "Szene" habe und innerhalb dieser Szene habe ich 'QGraphicsPixmapObject'. Es ist ein Kartenspiel, also muss ich dieses Objekt 20 Mal verstecken und zeigen, und ich kann es nicht mit einem 'for' machen, also hast du mir gesagt, dass ich' QStateMachine' benutzen soll. Jetzt habe ich 'QState' und' QStateMachine' erstellt, kann sie aber nicht verwenden. Ich habe den Übergang von 's1' nach' s2' mit 'signals' hinzugefügt, und jetzt wende ich an, welches Objekt ich in jedem' QState' anzeigen möchte. Ist es möglich zu tun? –
"Ich muss das Objekt 20 Mal verstecken und zeigen" Das gleiche? Meinst du, dass du es 20 mal blinzeln willst? Oder möchten Sie 20 verschiedene Objekte nacheinander zeigen? –