Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ "Пропустить" события мыши

Автор: MishaUA 21.7.2015, 8:49

Здрвствуйте!
Допустим, есть Qwidget, на нем размещен QFrame. Как сделать, чтобы клик мыши (mousePressEvent и mouseReleaseEvent) по QFrame "пропускались" и передавались на его родительский виджет Qwidget?

Автор: Ponchikus 21.7.2015, 17:06

Цитата(MishaUA @ 21.7.2015, 9:49) *
Здрвствуйте!
Допустим, есть Qwidget, на нем размещен QFrame. Как сделать, чтобы клик мыши (mousePressEvent и mouseReleaseEvent) по QFrame "пропускались" и передавались на его родительский виджет Qwidget?


Привет.
Возможно я не прав, но попробуй переопределить событие мыши в QFrame и передать событие конкретному объекту.
void QFrame::mousePressEvent(QMouseEvent *e)
{
    widget->event(e);
}


Тогда в "widget" надо через bool QWidget::event(QEvent * event) принять это событие.
bool widget::event(QEvent * e)
{
if(e->type()==QEvent::MouseButtonRelease)
    {
        QMouseEvent *me=static_cast<QMouseEvent*>(e);
        if(me->button()==Qt::LeftButton)
        {
            qDebug()<<"MOUSE";
        }
    }
    return QWidget::event(e);
}


Но это не точно. Удачи.

Автор: MishaUA 17.11.2015, 1:53

Оказалось, это гораздо проще:

setAttribute(Qt::WA_TransparentForMouseEvents);

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)