QListWidget 发送没有项目的 doubleClicked 信号
Posted
技术标签:
【中文标题】QListWidget 发送没有项目的 doubleClicked 信号【英文标题】:QListWidget send doubleClicked signal with no items 【发布时间】:2011-03-28 21:55:31 【问题描述】:当用户双击 QListWidget 时,我想要在对话框上做某事(例如,打开 QFileDialog 窗口)上有一个 QListWidget。不幸的是,void doubleClicked (const QModelIndex & index)
仅在列表中有项目时才会触发。
是否可以让小部件在收到双击事件时在小部件内的任何位置触发信号?还是需要不同的方法?
【问题讨论】:
【参考方案1】:你可以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);
我希望这会有所帮助。
【讨论】:
谢谢你,我想补充一点,因为我有多个 QListWidgets 需要检查,所以我还必须检查 obj。但由于它是生成事件的 QListWiget 的视口,您实际上需要检查 obj->parent() 与您的 QListWidget 以发现哪个被双击。以上是关于QListWidget 发送没有项目的 doubleClicked 信号的主要内容,如果未能解决你的问题,请参考以下文章
PyQt4:如何获取 QlistWidget 的可见项目列表?