1

qgraphicsview内にいくつかのqgraphicsitems(qgraphicsitemsから継承されたクラス)を配置するqmainwindowがあります。これらのアイテムには、qgraphicsitems からも継承された個人的なアイテムが含まれています。これらのアイテムは、マウス プレス イベントをリッスンします。これらのアイテムには、カスタム ID などの独自の他のデータ プロパティもあります。

これらのアイテムからメイン ウィンドウにマウス イベントを渡すことができます。クリックされたアイテムの上記のカスタムIDをイベントとともにメインウィンドウに渡す必要があるため、メインウィンドウはクリックされたアイテムに合わせて外観を変更できます。

これを行うにはどうすればよいですか??

4

1 に答える 1

1

あなたの質問が理解できなかったかもしれませんが、イベントではなく SLOTS と SIGNALS を使用します。たとえば、次のような信号を QGraphicsScene に配置します。

void myItemClicked(int custom_id);

したがって、アイテムがマウスイベントをキャッチすると、次のことができます。

emit scene()->myItemClicked(my_id);

MainWindow は、シーンからの信号をそのスロットの 1 つに接続し、信号に沿って来る項目の ID に従ってそのプロパティを変更できます。

それ以外の場合、アイテムが QMainWindow のメソッドを呼び出すことを許可する場合 (これは設計上の選択です)、yuo は (たとえば) シーンにそれへのポインターを格納できるため、アイテムは次のことができます。

scene()->mainwindow->aMethod();
于 2012-03-21T10:57:39.430 に答える