Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] как поймать клик по QWidget?


Автор: EKoshelev 21.6.2013, 13:06
Если правильно понимаю, то перехватить клик по QWidget'у можно следующим образом:
1. Создать класс наследник от QWidget и перекрыть в нем mousePressEvent().
2. Положить этот виджет на форму программно.

Вопрос. Можно ли сделать всё это не создавая потомка и положив QWidget на форму в дизайн-тайме, а не программно?

Автор: 586 21.6.2013, 13:27
С помощью installEventFilter устанави виджет-обработчик (например, родительское окно), и у виджета-обработчика перегрузи метод eventFilter.

Код
QParentWidget::QParentWidget()
{
    childWidget->installEventFilter(parentWidget)
}

bool QParentWidget::eventFilter(QObject *obj, QEvent *ev)
{
    if (obj == childWidget && ev.type() == QEvent::MouseButtonPress)
    {
        // mouse button pressed
    }
    return __super::eventFilter(obj, ev);
}

Автор: EKoshelev 21.6.2013, 13:54
Большое спасибо.

Вроде всё пашет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)