Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: tillias от Февраль 10, 2007, 13:59



Название: mouseMoveOver() [solved]
Отправлено: 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;


То есть через позицию курсора.
Может быть есть более простой путь??? ( тем более что код по странной причине не работает :(


Название: mouseMoveOver() [solved]
Отправлено: goer от Февраль 10, 2007, 16:02
В Qt есть такие типы событий:

Цитировать

QEvent::Enter
Mouse enters widget's boundaries.


QEvent::Leave
Mouse leaves widget's boundaries.


Так вот чтоб сделать анимированую кнопку ты можешь просто установить фильтр событий для кнопки, который будет перехватывать эти два события (в классе, который будет перехватывать события надо переопределить функцию eventFilter()) или наследоваться от кнопки и в своем классе Animated_Button переопределить функцию event() которая будет ловить эти события и делать соотвествующие изменения на батоне.


Название: mouseMoveOver() [solved]
Отправлено: tillias от Февраль 10, 2007, 16:07
Цитировать

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


QEvent... Вот это мощь :shock:
Спасибо!