2010-09-10 87 views
0

我試圖用Qt 4.5在兩個窗口小部件之間實現某種拖放功能。所以我重新實現了鼠標事件方法來做我的程序應該做的事情,當我按下第一個小部件上的鼠標按鈕並移動光標&釋放第二個按鈕。與Qt的鼠標事件

問題是:在第一個小部件上的pressEvent之後,沒有其他小部件在第一個小部件獲得發佈事件之前收到與鼠標有關的事件(移動,釋放或輸入)。即使第一個小部件沒有收到離開事件時,如果該按鈕沒有事先釋放光標出去。

如何在發佈按鈕之前讓目標小部件接收鼠標事件?

謝謝。

回答

2

IIRC你不使用「正常」鼠標事件來拖放Qt。請閱讀Qt documentation中的相應章節。

+0

是的,但使用'QDrag'類,我不得不使用拖動的數據作爲'QMimeData'而不是自定義類。 – gregseth 2010-09-10 10:57:51

+0

只需定義一個自定義MIME類型(例如「application/x-mywidget」),將數據存儲在QByteArray中並使用'QMimeType :: setData()'。 – WolfgangA 2010-09-10 15:11:16

+0

好吧,但我如何從'QByteArray'中取回我的課程? – gregseth 2010-09-13 06:46:05