Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: BuRn от Декабрь 21, 2011, 08:54



Название: QEvent
Отправлено: BuRn от Декабрь 21, 2011, 08:54
Подскажите как обработать комбинацию press и move одновременно , хочу что бы можно было нажать на мышь и тащить объект в свое место ?


Название: Re: QEvent
Отправлено: BRE от Декабрь 21, 2011, 09:08
В обработчике press выставляешь флажок, который проверяешь в обработчике move и тащишь когда он установлен. В release флажок снимаешь.


Название: Re: QEvent
Отправлено: BuRn от Декабрь 21, 2011, 09:27
была мысль с флажком , но думал может есть другие варианты решения ?


Название: Re: QEvent
Отправлено: Syveren от Декабрь 21, 2011, 11:48
Код:
void QWidget::mouseMoveEvent ( QMouseEvent * event )
{
    if(event->buttons()==Qt::LeftButton) // нажата левая кнопка
    ....
}



Название: Re: QEvent
Отправлено: popper от Декабрь 21, 2011, 12:05
Только заменить
Код:
    ...
    if(event->buttons()==Qt::LeftButton) // нажата левая кнопка
    ....

на
Код:
   if( event->buttons().testFlag(Qt::LeftButton) )

Но я также думаю, что лучше делать через флаг, который устанавливается в mousePressEvent и снимается в mouseReleaseEvent


Название: Re: QEvent
Отправлено: KrupaKarlo от Декабрь 22, 2011, 13:19
Если тебе надо перетащить объект в другое место, то для этого создана система перетаскивания. Набери в справке Drag and Drop. Там целый раздел об этом.

Если нет, то флаги что ж делать то)