我在对话框上有一个 QListWidget,当用户双击 QListWidget 时,我想做一些事情(例如,打开 QFileDialog 窗口)。不幸的是,void doubleClicked (const QModelIndex & index)
只有当列表中有项目时才会触发。
是否可以在小部件内的任何位置收到双击事件时让小部件触发信号?还是需要不同的方法?
我在对话框上有一个 QListWidget,当用户双击 QListWidget 时,我想做一些事情(例如,打开 QFileDialog 窗口)。不幸的是,void doubleClicked (const QModelIndex & index)
只有当列表中有项目时才会触发。
是否可以在小部件内的任何位置收到双击事件时让小部件触发信号?还是需要不同的方法?
您可以将事件过滤器安装到 listwidget 的视口小部件,如下所示:
listWidget->viewport()->installEventFilter(this); // "this" could be your window object.
在 eventFilter 方法中检查QEvent::MouseButtonDblClick
事件:
bool YourWindowClass::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseButtonDblClick)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
qDebug("Mouse double click %d %d", mouseEvent->x(), mouseEvent->y());
return true;
}
else
{
return QMainWindow::eventFilter(obj, event);
}
}
我希望这有帮助。