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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QEvent  (Прочитано 1969 раз)
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;
    }
}
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Март 09, 2015, 00:14 »

Посмотрите метод виджета setMouseTracking Улыбающийся
Записан

Eism
Гость
« Ответ #2 : Март 12, 2015, 21:06 »

Посмотрите метод виджета setMouseTracking Улыбающийся

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

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

и всё идеально Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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