我有qmainwindow,它在qgraphicsview中包含几个qgraphicsitems(来自qgraphicsitems的继承类)。这些项目包含从qgraphicsitems继承的个人物品。这些项目听老鼠新闻事件。这些项目还有自己的其他数据属性,例如自定义ID。
我可以将鼠标事件从这些项目传递到主窗口。我需要将上述单击项的自定义ID传递给主窗口,同时使用该事件,以便主窗口可以更改其外观以适应所单击的项目。
我该怎么办?
答案 0 :(得分:1)
也许我没有得到你的问题,但我会使用SLOTS和SIGNALS而不是事件。 例如,在QGraphicsScene上放置一个信号,例如:
void myItemClicked(int custom_id);
因此,当您的项目捕获鼠标事件时,他们可以执行以下操作:
emit scene()->myItemClicked(my_id);
MainWindow可以将来自场景的信号连接到其中一个插槽,并根据信号中项目的ID更改其属性。
否则,如果您允许项目调用QMainWindow的方法(这是一个设计选择),yuo可以在(例如)场景中存储指向它的指针,因此项目可以执行:
scene()->mainwindow->aMethod();