【问题标题】:QListWidget send doubleClicked signal with no itemsQListWidget 发送没有项目的 doubleClicked 信号
【发布时间】:2011-03-28 21:55:31
【问题描述】:

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

是否可以让小部件在收到双击事件时在小部件内的任何位置触发信号?还是需要不同的方法?

【问题讨论】:

    标签: c++ qt click qt-creator qlistwidget


    【解决方案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 以发现哪个被双击。
    猜你喜欢
    • 2015-05-18
    • 2011-01-08
    • 2020-08-03
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    相关资源
    最近更新 更多