小编Pil*_*lot的帖子

QListWidget 上带有 MouseButtonRelease 的 QT eventFilter 未检测到鼠标按下/释放

它应该很简单,但不知何故它没有按预期工作。我试图用 eventFilter 捕获 QListWidget 上的鼠标按钮按下或释放。ListWidget是在UI下准备的。我已经像这样安装了 eventFilter

ui->listWidget->installEventFilter(this);
Run Code Online (Sandbox Code Playgroud)

我在公共标题下添加了:

bool eventFilter(QObject *obj, QEvent *event);
Run Code Online (Sandbox Code Playgroud)

并在MainWindow下创建

bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{

if (event->type() == QEvent::KeyPress)
{

    qDebug() << "Keyboard press";

} else if (event->type() == QEvent::MouseButtonRelease) {

    qDebug() << "Mouse press L";

} else if(event->type() == QEvent::ContextMenu) {

    qDebug() << "Mouse press R";
}

return QObject::eventFilter(obj, event);
}
Run Code Online (Sandbox Code Playgroud)

我已经检查过文档,它说每个事件在发送到给定的 QWidget 之前都会传递到 eventHandler 。这部分是正确的。因为 KeyPress 和 ContextMenu 正在工作。即使列表小部件设置为blocksingals(true)。

问题是 MouseButtonRelease/Press 不起作用。有东西阻碍了它,我不知道什么或如何让它发挥作用。我也有 on_listWidget_clicked 但即使摆脱它它仍然无法工作。

请帮忙。谢谢

qt qevent eventfilter

5
推荐指数
1
解决办法
2902
查看次数

标签 统计

eventfilter ×1

qevent ×1

qt ×1