Qt 的鼠标事件
Posted
技术标签:
【中文标题】Qt 的鼠标事件【英文标题】:Mouse events with Qt 【发布时间】:2010-09-10 10:12:49 【问题描述】:我正在尝试使用 Qt 4.5 在两个小部件之间实现某种拖放功能。所以我重新实现了鼠标事件方法来执行我的程序在第一个小部件上按下鼠标按钮并移动光标并释放第二个小部件上的按钮时应该执行的操作。
问题是:在第一个小部件上的pressEvent
之后,在第一个小部件获得释放事件之前,没有其他小部件接收到与鼠标相关的事件(移动、释放或进入)。如果没有事先释放按钮,即使是第一个小部件在光标移出时也不会收到离开事件。
如何让目标小部件在按钮释放之前接收到鼠标事件?
谢谢。
【问题讨论】:
【参考方案1】:IIRC 您不使用“正常”鼠标事件在 Qt 中进行拖放。阅读Qt documentation 中的相应部分。
【讨论】:
是的,但是对于QDrag
类,我不得不将拖动的数据用作 QMimeData
而不是自定义类。
只需定义一个自定义的 mime 类型(例如“application/x-mywidget”),将数据存储在 QByteArray 中并使用 'QMimeType::setData()'。
好的,但是如何从QByteArray
找回我的课程?以上是关于Qt 的鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章