2010-09-10 91 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