当用户双击QListWidget时,我在一个对话框上有一个QListWidget,我想做某事(例如,打开一个QFileDialog窗口)。不幸的是,void doubleClicked (const QModelIndex & index)
仅在列表中有项目时触发。
在窗口小部件的任何位置收到双击事件时,是否可以让窗口小部件触发信号?或者需要采用不同的方法?
答案 0 :(得分:5)
你可以install an event filter到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);
}
}
我希望这会有所帮助。