Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Eism от Март 08, 2015, 23:48



Название: QEvent
Отправлено: Eism от Март 08, 2015, 23:48
Всем добрый вечер!
Вопрос таков:

Код:
QPaintWidget *wgt;  //создал
wgt = new QPaintWidget(ui->groupBox); //поместил
ui->gridLayout->addWidget(wgt);  //добавил в лайаут

и теперь я хочу чтобы, когда мышка двигалась над wgt , то выводились координаты мышки
вот так выводится, когда я везде провожу
Код:
qApp->installEventFilter( this );  

вот так выводится, когда у меня зажата любая кнопка на мыши
Код:
wgt->installEventFilter( this );  

в этих случаях он вообще ничего не делает
Код:
ui->gridLayout->installEventFilter( this );
ui->groupBox->installEventFilter( this );

как мне быть??

вот код для мыши
Код:
bool MainWindow::eventFilter( QObject *obj, QEvent *evt )
{
        if( evt->type() == QEvent::MouseButtonPress )
        {
            QMouseEvent *m = static_cast< QMouseEvent * >( evt );
            QWidget *w = QApplication::widgetAt(m->globalPos());
            if( w){
                /*...*/
                wgt->show();
            }
        }

        if( evt->type() == QEvent::MouseMove)
        {
            QMouseEvent *m = static_cast< QMouseEvent * >( evt );
            QWidget *w = QApplication::widgetAt(m->globalPos());
            if( w ){
                ui->label->setText( QString::number(m->x())+" " + QString::number(m->y()) );
            }
        }
    return QMainWindow::eventFilter( obj, evt );
}
void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}


Название: Re: QEvent
Отправлено: gil9red от Март 09, 2015, 00:14
Посмотрите метод виджета setMouseTracking  (http://qt-project.org/doc/qt-4.8/qwidget.html#mouseTracking-prop):)


Название: Re: QEvent
Отправлено: Eism от Март 12, 2015, 21:06
Посмотрите метод виджета setMouseTracking  (http://qt-project.org/doc/qt-4.8/qwidget.html#mouseTracking-prop):)

Спасибо!!! Вопрос решён

wgt->installEventFilter( this );
wgt->setMouseTracking( true );

и всё идеально ;D