使用qt中的事件将项属性传递到主窗口

时间:2012-03-21 10:18:38

标签: c++ qt qgraphicsitem qevent

我有qmainwindow,它在qgraphicsview中包含几个qgraphicsitems(来自qgraphicsitems的继承类)。这些项目包含从qgraphicsitems继承的个人物品。这些项目听老鼠新闻事件。这些项目还有自己的其他数据属性,例如自定义ID。

我可以将鼠标事件从这些项目传递到主窗口。我需要将上述单击项的自定义ID传递给主窗口,同时使用该事件,以便主窗口可以更改其外观以适应所单击的项目。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

也许我没有得到你的问题,但我会使用SLOTS和SIGNALS而不是事件。 例如,在QGraphicsScene上放置一个信号,例如:

void myItemClicked(int custom_id);

因此,当您的项目捕获鼠标事件时,他们可以执行以下操作:

emit scene()->myItemClicked(my_id);

MainWindow可以将来自场景的信号连接到其中一个插槽,并根据信号中项目的ID更改其属性。

否则,如果您允许项目调用QMainWindow的方法(这是一个设计选择),yuo可以在(例如)场景中存储指向它的指针,因此项目可以执行:

scene()->mainwindow->aMethod();