Russian Qt Forum

Qt => Вопросы новичков => Тема начата: k2rush от Март 16, 2012, 22:14



Название: Mouse Press и Move ивенты
Отправлено: 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)
        }
В пресс ивент, модель начинает дёргаться как больная при нажатии других кнопок мыши(оно то и понятно, начальную позицию мыши не отследили, сохранилась последняя).
А если вставить в мув ивент просто ничего не работает ???


Название: Re: Mouse Press и Move ивенты
Отправлено: BRE от Март 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 )


Название: Re: Mouse Press и Move ивенты
Отправлено: k2rush от Март 16, 2012, 22:22
Цитировать
when at least one mouse button is pressed while the mouse is being moved
И метода отследить нужную кнопку нет?


Название: Re: Mouse Press и Move ивенты
Отправлено: BRE от Март 16, 2012, 22:24
И метода отследить нужную кнопку нет?
Qt::MouseButton QMouseEvent::button () const
Qt::MouseButtons QMouseEvent::buttons () const


Название: Re: Mouse Press и Move ивенты
Отправлено: k2rush от Март 16, 2012, 22:44
BRE
Спасибо большое, получилось усовершенствовать пример =)


Название: Re: Mouse Press и Move ивенты
Отправлено: Bepec от Март 19, 2012, 09:09
Переименовывай 1 сообщение в "Название темы[РЕШЕНО]"
И да, выложи пример. Мб кому то пригодится ;)