Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: radislav72 от Декабрь 18, 2014, 14:54



Название: Событие QEvent::MouseButtonPress на QTableView
Отправлено: radislav72 от Декабрь 18, 2014, 14:54
Здравствуйте!

Хочу отловить событие QEvent::MouseButtonPress на компоненте QTableView, который размещен на QDialog в дизайнере.
Написал фильтр событий
Код:
bool contract::eventFilter(QObject *o, QEvent *e)
{
    if(e->type() == QEvent::MouseButtonPress)
    {
        if (o == ui->tabvGraphics) createGraphicsPopup();
    }

    return QWidget::eventFilter(o, e);
}
В конструкторе диалога установил фильтр для нужного виджета:
Код:
ui->tabvGraphics->installEventFilter(this);

Но при нажатии мыши на виджете tabvGraphics (класс QTableView) событие не ловится.

В чем может быть дело?


Название: Re: Событие QEvent::MouseButtonPress на QTableView
Отправлено: Igors от Декабрь 18, 2014, 14:59
Попробуйте
Код
C++ (Qt)
if (o == ui->tabvGraphics->viewport())..
Ну и фильтр на него


Название: Re: Событие QEvent::MouseButtonPress на QTableView
Отправлено: __Heaven__ от Декабрь 18, 2014, 15:02
А может проще наследоваться от QTableView, а в дизайнере преобразовать тот QTableView в свой класс?


Название: Re: Событие QEvent::MouseButtonPress на QTableView
Отправлено: radislav72 от Декабрь 18, 2014, 15:12
С viewport все сразу пошло как надо.
Так просто, а столько времени ушло :(
Спасибо!

Создавать новый класс все-таки намного дольше