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 的鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章

QT学习之事件处理

Qt中的鼠标事件

Qt 的鼠标事件

qt linux窗口大小变化后刷新鼠标事件

QT学习小结之鼠标事件

Qt事件机制---信号通过事件实现,事件可以过滤,事件更底层,事件是基础,信号是扩展。