Russian Qt Forum
Октябрь 03, 2024, 12:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Нажатие правой кнопкой мыши по кнопке  (Прочитано 9594 раз)
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« : Август 30, 2013, 09:23 »

Доброго дня! =) Можно ли как-то отследить нажатие правой кнопки мыши по QPushButton или QButtonGroup, иначе чем через наследование и переопределение кнопки?!
« Последнее редактирование: Сентябрь 01, 2013, 23:09 от Vladimir » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Август 30, 2013, 09:25 »

Доброго дня! =) Можно ли как-то отследить нажатие правой кнопки мыши по QPushButton или QButtonGroup, иначе чем через наследование и переопределение кнопки?!
void QObject::installEventFilter(QObject * filterObj)
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #2 : Август 30, 2013, 09:31 »

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

и как этот фильтр событий пристроить к кнопке, созданный в дизайнере?!
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Август 30, 2013, 09:33 »

и как этот фильтр событий пристроить к кнопке, созданный в дизайнере?!
Как и к любой другой, по указателю.
Записан
Bepec
Гость
« Ответ #4 : Август 30, 2013, 09:43 »

ui.кнопка_созданная_в_дизайнере -> installEventFilter(this)
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #5 : Август 30, 2013, 09:59 »

а в классе, где подгружается ui переопределяем метод ?
 protected:
        bool eventFilter(QObject *obj, QEvent *event);

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

« Последнее редактирование: Август 30, 2013, 10:03 от Vladimir » Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #6 : Август 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);
         }
}

Спасибо за подсказку! Работает!  Смеющийся
Записан
Vladimir
Крякер
****
Offline Offline

Сообщений: 305



Просмотр профиля
« Ответ #7 : Август 30, 2013, 10:38 »

Еще уточнение.. почему не хочет срабатывать с QButtonGroup?

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

btnGroupDialogStatus->installEventFilter(this);

по одной кнопке работает, если делать, а с группой почему не нравится?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #8 : Август 30, 2013, 11:19 »

потому что группа — это не кнопка, она просто содержит в себе кнопки
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.141 секунд. Запросов: 23.