QListWidget发送没有项目的doubleClicked信号

Tim*_*nes 1 c++ qt click qlistwidget qt-creator

当用户双击QListWidget时,我在一个对话框上有一个QListWidget,我想做某事(例如,打开一个QFileDialog窗口).不幸的是,void doubleClicked (const QModelIndex & index)当列表中有项目时,唯一的火灾.

是否可以在窗口小部件的任何位置收到双击事件时让窗口小部件触发信号?或者需要采用不同的方法?

ser*_*nko 5

您可以在listwidget的视口窗口小部件中安装事件过滤器,如下所示:

listWidget->viewport()->installEventFilter(this); // "this" could be your window object.
Run Code Online (Sandbox Code Playgroud)

在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.