我有一個qmainwindow,它在qgraphicsview中包含幾個qgraphicsitems(來自qgraphicsitems的繼承類)。這些項目還包含從qgraphicsitems繼承的個人物品。這些項目收聽鼠標按下事件。這些項目也有自己的其他數據屬性,如自定義ID。將項目屬性傳遞給qt中的事件的主窗口
我可以將鼠標事件從這些項目傳遞到主窗口。我需要將上述所點擊的項目的自定義ID傳遞給主窗口,以便主窗口可以更改其外觀以適應單擊的項目。
我該怎麼做?
我有一個qmainwindow,它在qgraphicsview中包含幾個qgraphicsitems(來自qgraphicsitems的繼承類)。這些項目還包含從qgraphicsitems繼承的個人物品。這些項目收聽鼠標按下事件。這些項目也有自己的其他數據屬性,如自定義ID。將項目屬性傳遞給qt中的事件的主窗口
我可以將鼠標事件從這些項目傳遞到主窗口。我需要將上述所點擊的項目的自定義ID傳遞給主窗口,以便主窗口可以更改其外觀以適應單擊的項目。
我該怎麼做?
也許我沒有得到你的問題,但我會使用SLOTS和SIGNALS而不是事件。 例如,把一個信號上QGraphicsScene,是這樣的:
void myItemClicked(int custom_id);
所以,當你的項目趕鼠標事件,他們可以這樣做:
emit scene()->myItemClicked(my_id);
主窗口可以連接從現場來該信號到其中一個插槽並根據沿信號傳送的項目的ID更改其屬性。
否則,如果允許項目調用的QMainWindow的方法(這是一個設計選擇)宥可以存儲指向它在(例如)的一幕,讓項目能做到:
scene()->mainwindow->aMethod();
嘗試發佈整個EventMonitor.h,錯誤在53行,但我們沒有看到它。 – Masci 2012-03-21 13:54:46
謝謝,我也附上了代碼 – zapumal 2012-03-21 18:43:17