QListWidget отправляет сигнал doubleClicked без элементов - PullRequest
1 голос
/ 29 марта 2011

У меня есть QListWidget в диалоге, в котором я хочу что-то сделать (например, открыть окно QFileDialog), когда пользователь дважды щелкает на QListWidget. К сожалению, void doubleClicked (const QModelIndex & index) срабатывает только при наличии элементов в списке.

Можно ли заставить виджет запускать сигнал при получении события двойного щелчка в любом месте внутри виджета? Или нужен другой подход?

1 Ответ

5 голосов
/ 29 марта 2011

Вы можете установить фильтр событий в виджет видового экрана списка виджета, что-то вроде этого:

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);
    }
}

Надеюсь, это поможет.

...