它应该很简单,但不知何故它没有按应有的方式工作。我正在尝试在 QListWidget 上使用 eventFilter 鼠标按钮按下或释放来捕捉。ListWidget 是在 UI 下准备的。我已经像这样安装了 eventFilter
ui->listWidget->installEventFilter(this);
我在公共下的标题中添加了:
bool eventFilter(QObject *obj, QEvent *event);
并在 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);
}
我已经检查了文档,它说每个事件在发送到给定的 QWidget 之前都被传递给 eventHandler。这部分是正确的。因为 KeyPress 和 ContextMenu 正在工作。即使列表小部件设置为 blocksingals(true)。
问题是 MouseButtonRelease / Press 不起作用。有东西挡住了它,我不知道是什么或如何让它工作。我也有 on_listWidget_clicked 但即使摆脱它仍然无法正常工作。
请帮忙。谢谢