2012-03-21 28 views
0

我有一个qmainwindow,它在qgraphicsview中包含几个qgraphicsitems(来自qgraphicsitems的继承类)。这些项目还包含从qgraphicsitems继承的个人物品。这些项目收听鼠标按下事件。这些项目也有自己的其他数据属性,如自定义ID。将项目属性传递给qt中的事件的主窗口

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

我该怎么做?

+0

尝试发布整个EventMonitor.h,错误在53行,但我们没有看到它。 – Masci 2012-03-21 13:54:46

+0

谢谢,我也附上了代码 – zapumal 2012-03-21 18:43:17

回答

1

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

void myItemClicked(int custom_id); 

所以,当你的项目赶鼠标事件,他们可以这样做:

emit scene()->myItemClicked(my_id); 

主窗口可以连接从现场来该信号到其中一个插槽并根据沿信号传送的项目的ID更改其属性。

否则,如果允许项目调用的QMainWindow的方法(这是一个设计选择)宥可以存储指向它在(例如)的一幕,让项目能做到:

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

是否可以从项目发出QMainWindow信号? – zapumal 2012-03-21 11:38:53

+0

这样做,你应该存储一个引用或指向QMainWindow某处的项目可以得到它并触发其信号 – Masci 2012-03-21 11:43:12

+0

编译器不允许我传递主窗口的引用,这是我的初始方法失败... – zapumal 2012-03-21 11:48:01

相关问题