0

4 つの異なる QState を作成しましたが、すべての状態遷移で 1 つのオブジェクトを非表示にしたいと考えています。

これはコードです:

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);

presastatobool、プログラムの次のステップで変更する 2 つです。

これQGraphicsSceneで、シーンに と が追加されましたQGraphicsPixmapItem

たとえば、アイテムを隠しているシーンを更新したい:

if(presa==true) {object1->hide();} 

QState を (この場合は からinizio_manoaspetto_G1_primo) 変更する必要があることを理解しており、トランジションを追加しました。

しかし、どうすればそのアイテムを非表示にできますか?

QStateaspetto_G1_primoをどのように接続できますかobject1 -> hide();

正しく説明したことを願っています。

私の主な問題は、各 QState にシーンの異なる構成を割り当てるにはどうすればよいですか?

4

1 に答える 1

2

ここにすべてのプロパティがありQWidgetます: http://doc.qt.io/qt-5/qwidget.html#properties

各子クラスには、ドキュメントにある独自の追加プロパティもあります。

だからあなたがすることができます:

aspetto_G1_primo->assignProperty(object1, "visible", false);

次に、その状態に入ると、のプロパティ「visible」object1が に設定されfalseます。

ジオメトリ、スタイルシート、ラベルのテキストなど、状態に応じて他のプロパティを編集するために同じことを行うこともできます...

于 2016-06-06T19:23:55.863 に答える