Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Vladimir от Август 30, 2013, 09:23



Название: [РЕШЕНО] Нажатие правой кнопкой мыши по кнопке
Отправлено: Vladimir от Август 30, 2013, 09:23
Доброго дня! =) Можно ли как-то отследить нажатие правой кнопки мыши по QPushButton или QButtonGroup, иначе чем через наследование и переопределение кнопки?!


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Old от Август 30, 2013, 09:25
Доброго дня! =) Можно ли как-то отследить нажатие правой кнопки мыши по QPushButton или QButtonGroup, иначе чем через наследование и переопределение кнопки?!
void QObject::installEventFilter(QObject * filterObj)


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Vladimir от Август 30, 2013, 09:31
Доброго дня! =) Можно ли как-то отследить нажатие правой кнопки мыши по QPushButton или QButtonGroup, иначе чем через наследование и переопределение кнопки?!
void QObject::installEventFilter(QObject * filterObj)

и как этот фильтр событий пристроить к кнопке, созданный в дизайнере?!


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Old от Август 30, 2013, 09:33
и как этот фильтр событий пристроить к кнопке, созданный в дизайнере?!
Как и к любой другой, по указателю.


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Bepec от Август 30, 2013, 09:43
ui.кнопка_созданная_в_дизайнере -> installEventFilter(this)


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Vladimir от Август 30, 2013, 09:59
а в классе, где подгружается ui переопределяем метод ?
 protected:
        bool eventFilter(QObject *obj, QEvent *event);

и там делаем обработку?



Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Vladimir от Август 30, 2013, 10:12
Да, так и сделать =)

Код:
#include <QMouseEvent>
...

bool AWS::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonPress) {
            QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
            if(mouseEvent->button() == Qt::RightButton)
                qDebug("MouseButtonPress == Qt::RightButton");
             return true;
         }
         else {
             // standard event processing
             return QObject::eventFilter(obj, event);
         }
}

Спасибо за подсказку! Работает!  ;D


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: Vladimir от Август 30, 2013, 10:38
Еще уточнение.. почему не хочет срабатывать с QButtonGroup?

Код:
btnGroupDialogStatus = new QButtonGroup(this);
btnGroupDialogStatus->addButton(ui->btnStatusPowerSystem, 0);
...

btnGroupDialogStatus->installEventFilter(this);

по одной кнопке работает, если делать, а с группой почему не нравится?


Название: Re: Нажатие правой кнопкой мыши по кнопке
Отправлено: kambala от Август 30, 2013, 11:19
потому что группа — это не кнопка, она просто содержит в себе кнопки