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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Ответ на событие мыши.  (Прочитано 11362 раз)
¤Se®ega¤
Гость
« : Май 01, 2009, 14:13 »

При наведении курсора мыши на объект должно произойти изменение параметров объекта, наприер при наведении на Qlabel-появяется рамка( setFrameShadow(QFrame::Plain) ).Как это реализовать? Использовать mouseMoveEvent(QMouseEvent)? setMouseTracking(TRUE) уже установил.
« Последнее редактирование: Май 01, 2009, 18:47 от ¤Se®ega¤ » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Май 01, 2009, 14:30 »

Да. Переопределить mouseMoveEvent(QMouseEvent) и в нем проводить действие.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
¤Se®ega¤
Гость
« Ответ #2 : Май 01, 2009, 14:39 »

Так как мне переопределить это событие только для объектов класса QLabel?У меня на форме много разных обектов, кроме label.Как именно мне отловить перемещение над label я не понимаю В замешательстве
« Последнее редактирование: Май 01, 2009, 14:41 от ¤Se®ega¤ » Записан
gueRRero
Гость
« Ответ #3 : Май 01, 2009, 15:23 »

Как вариант, создать свой класс, унаследованный от QLabel, в нем переопределить соответствующие события и на форме использовать именно его.
Может быть, можно и как-то по-другому.
Записан
¤Se®ega¤
Гость
« Ответ #4 : Май 01, 2009, 15:41 »

допустим я так сделаю, а не будет ли так, что я добавлю несколько объектов этого класса на форму и при наведении у них у ВСЕХ будут меняться параметры сразу?
Записан
¤Se®ega¤
Гость
« Ответ #5 : Май 01, 2009, 15:48 »

Можно сделать еще с фильтром, но там придется писать для каждого компонента.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Май 01, 2009, 16:16 »

>>я добавлю несколько объектов этого класса на форму и при наведении у них у ВСЕХ будут меняться параметры сразу?
Это из области С++
каждый объект - экземпляр класса - будет сам по себе.
Записан

Юра.
¤Se®ega¤
Гость
« Ответ #7 : Май 01, 2009, 16:54 »

Да, спасибо,я  уже понял, это я с фильтром думал.
Записан
¤Se®ega¤
Гость
« Ответ #8 : Май 01, 2009, 18:03 »

Еще не подскажете?Я при навдении курсора делаю рамку у Label,после того как курсор вышел за пределы Label рамка, естественно остается.Как лучше от неё избавиться?Фильтр,таймер, переопределение mousemove на родительском виджете(но тут надо будет изменять состояние для всех унаследованных от Label класса объектов),по координатам мыши (пару-тройку пикселей по краям Label? при попадании на которые рамка будет исчезать), может еще что?
Записан
gueRRero
Гость
« Ответ #9 : Май 01, 2009, 18:38 »

Если не ошибаюсь, void QWidget::leaveEvent(QEvent* event) должно помочь.
Записан
¤Se®ega¤
Гость
« Ответ #10 : Май 01, 2009, 18:40 »

Тогда может вообще сделать не через mouseMove, а через enterEvent и leaveEvent?
Записан
gueRRero
Гость
« Ответ #11 : Май 01, 2009, 18:41 »

Да, я думаю, что так будет и логичнее и проще.
Записан
¤Se®ega¤
Гость
« Ответ #12 : Май 01, 2009, 18:46 »

Уже сделал.Спасибо.А что касательно загрузки изображения в Label, это не хуче чем использование QImage и QPixmap? или всеже лучше грузить через QImage и QPixmap?
Записан
gueRRero
Гость
« Ответ #13 : Май 01, 2009, 18:53 »

Вот это лучше спросить у наших гуру. Я думаю, что это не принципиально, ибо все равно в QLabel картинка ставится через setPixmap.
Записан
¤Se®ega¤
Гость
« Ответ #14 : Май 01, 2009, 18:56 »

Ну я предполагаю что если добавить кнопку, на которую через setIcon так-же добавить картитнку, будет грузиться таким же образом, но от такого рода отображения картинок мой руководитель отказался.
« Последнее редактирование: Май 02, 2009, 10:55 от ¤Se®ega¤ » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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