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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Mouse Press и Move ивенты  (Прочитано 4433 раз)
k2rush
Гость
« : Март 16, 2012, 22:14 »

Код:
/*virtual*/ void OGLPiramid::mousePressEvent(QMouseEvent* pe)
{

    m_ptPosition = pe->pos();

}

// ----------------------------------------------------------------------
/*virtual*/void OGLPiramid::mouseMoveEvent(QMouseEvent* pe)
{


    m_xRotate += 360 * (GLfloat)(pe->y() - m_ptPosition.y()) / height();
    m_yRotate += 360 * (GLfloat)(pe->x() - m_ptPosition.x()) / width();
    updateGL();

    m_ptPosition = pe->pos();

}
В прес ивенте мы отслеживаем координаты мышки при нажати. в мув мы разворачиваем 3д объект.
Но вот что понять не могу, почему он не поворачивается постоянно? просто при перемещении мышки, ведь на это никаких условий нету. Фактически мув ивент исполняется всегда, независимо от нажатия кнопки мыши.
А вопрос этот возник потому что я хотел ограничить возможность поворота только при нажатии левой кнопки мыши. Но при вставке кода
Код:
        if(pe->type() == QEvent::MouseButtonPress)
        {
            if(((QMouseEvent*)pe)->button() == Qt::LeftButton)
        }
В пресс ивент, модель начинает дёргаться как больная при нажатии других кнопок мыши(оно то и понятно, начальную позицию мыши не отследили, сохранилась последняя).
А если вставить в мув ивент просто ничего не работает Непонимающий
Записан
BRE
Гость
« Ответ #1 : Март 16, 2012, 22:18 »

Это свойство из QWidget
Цитировать
mouseTracking : bool
This property holds whether mouse tracking is enabled for the widget.
If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved.
If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed.
Access functions:
bool hasMouseTracking () const
void setMouseTracking ( bool enable )
Записан
k2rush
Гость
« Ответ #2 : Март 16, 2012, 22:22 »

Цитировать
when at least one mouse button is pressed while the mouse is being moved
И метода отследить нужную кнопку нет?
Записан
BRE
Гость
« Ответ #3 : Март 16, 2012, 22:24 »

И метода отследить нужную кнопку нет?
Qt::MouseButton QMouseEvent::button () const
Qt::MouseButtons QMouseEvent::buttons () const
Записан
k2rush
Гость
« Ответ #4 : Март 16, 2012, 22:44 »

BRE
Спасибо большое, получилось усовершенствовать пример =)
Записан
Bepec
Гость
« Ответ #5 : Март 19, 2012, 09:09 »

Переименовывай 1 сообщение в "Название тем
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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