0

私はdialog.cppファイルを持ってQGraphicsSceneいますQGraphicsView

QGraphicsPixmapItemとを継承する 2 つのクラスを作成"Vehicle"しまし"Junction"た。これらのオブジェクトは両方ともQGraphicsScene、私のdialog.cppファイルで同じものに追加されます。

オブジェクト"Junction"からのメンバーであるメソッドを呼び出したいです。"Vehicle"このメソッドは、必要なブール値を返します。

親へのアクセスを利用する簡単な解決策があると確信しているため、これはc++指向の質問です。

プロジェクトの背景情報: それぞれ"Vehicle"が道路に沿って移動し、"Junction". 次に、車両はジャンクションに「私の車線には青信号がありますか?」と尋ねると、ジャンクションは応答し"true/false"ます。

4

1 に答える 1

0

QT ドキュメントで考えられる解決策を確認した後、問題を部分的に解決しました。

呼び出しthis->scene()により、オブジェクトが追加されたシーンのメンバー関数にアクセスできます。オブジェクトの座標を知っているのでthis->scene()->itemAt(240,0);、アイテムへのポインターを取得するために呼び出します。

返されるポインタは、指定された座標にあるシーンの一番上のアイテムです。これで問題が発生する場合は、代わりに を使用scene()->items()して、シーン上のすべてのアイテムのリストを取得します。

ただし、これはアイテムへのアクセスのみを提供し、アイテムが格納されているベクトルへのアクセスは許可しません。私は関数の使用を検討しており、->parent()これが解決策である可能性があり、必要なポインターに動的にキャストすることと組み合わせていると思います。完全な解決策が見つかったら、回答を更新します。

于 2013-03-16T13:31:19.853 に答える