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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: mouseMoveOver() [solved]  (Прочитано 2544 раз)
tillias
Гость
« : Февраль 10, 2007, 13:59 »

Здравствуйте!

Пытаюсь реализовать MouseMoveOver/Off Event наподобие Delphi/CBuilder:
Код:

void Animated_Button::mouseMoveEvent ( QMouseEvent * e )
{
    QPoint widget_pos = pos();
QPoint mouse_curosor_pos = e->pos();
if (( mouse_curosor_pos.x() >  widget_pos.x() + this->width() ) || (
 mouse_curosor_pos.y() > widget_pos.y() + this->width()) || (
 mouse_curosor_pos.x() < widget_pos.x()) || (
 mouse_curosor_pos.y() < widget_pos.y() ))  
{
  // mouse move out of widget
setPixmap( *normal );
} else
{
  // mouse move over widget
setPixmap( *mouse_over);
}
  return;


То есть через позицию курсора.
Может быть есть более простой путь??? ( тем более что код по странной причине не работает Грустный
Записан
goer
Гость
« Ответ #1 : Февраль 10, 2007, 16:02 »

В Qt есть такие типы событий:

Цитировать

QEvent::Enter
Mouse enters widget's boundaries.


QEvent::Leave
Mouse leaves widget's boundaries.


Так вот чтоб сделать анимированую кнопку ты можешь просто установить фильтр событий для кнопки, который будет перехватывать эти два события (в классе, который будет перехватывать события надо переопределить функцию eventFilter()) или наследоваться от кнопки и в своем классе Animated_Button переопределить функцию event() которая будет ловить эти события и делать соотвествующие изменения на батоне.
Записан
tillias
Гость
« Ответ #2 : Февраль 10, 2007, 16:07 »

Цитировать

росто установить фильтр событий для кнопки


QEvent... Вот это мощь :shock:
Спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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