2012-03-21 22 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

相關問題