c++ - 当我有一堆小部件时,Qt 如何设置全局 mouseReleaseEvent

标签 c++ qt mouseevent

有没有办法设置全局mouseReleaseEvent?
我的意思是我有 QMainWindow 和它 QFrame 和 init QListView 和它 我有构造 QListView 的小部件,在小部件内部我有各种标签和文本字段。 所以我想在我的应用程序中的任何地方检测 mouseRelease 我必须在所有小部件中实现 mouseReleaseEvent?

void ItemWidget::mouseReleaseEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
         ;
    }
    event->accept();
}

最佳答案

根据QMouseEvent documentation ,接收鼠标按下的小部件也将获得鼠标释放。因此,除了接收原始按下的小部件之外,您不必再寻找鼠标释放。这通常称为鼠标“抓取”。

您可能还想检查 Qt::WA_NoMousePropagation 是否未在您的 child 上设置。如果已设置,它将确保您的鼠标事件不会冒泡。

如果你真的想捕获所有鼠标释放事件,你可以尝试安装一个 event filter在 QApplication 本身上。这是一个有点繁重的解决方案,但您应该获得每个鼠标释放事件。

关于c++ - 当我有一堆小部件时,Qt 如何设置全局 mouseReleaseEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9274693/

相关文章:

c++ - 抑制 Python 打印输出

c# - 如何在 C# 中创建未转义的十六进制字节字符串

c++ - 名称映射--\\.\PhysicalDrive 到\\.\SCSI

c++ - 在 exec() 之前将 quit() 发布到 QEventLoop

android - 基于 Qt 的 Android 应用程序在一台特定设备上启动时崩溃。 "dlopen failed: libqtforandroid"

c++ - 使用 Qt 获取一些具有 KEY 字符的 ascii 值

java:激活鼠标单击事件

javascript - 关于Javascript鼠标事件的困惑

javascript - 当 Canvas 大小是相对的时,在 Canvas 上获得正确的鼠标位置?

c++ - 为什么Qt Creator不用.lib和LoadLibrary()也能正确链接dll?