Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ernie от Октябрь 28, 2010, 13:12



Название: Сохранение мыши в зажатом состоянии на виджете
Отправлено: ernie от Октябрь 28, 2010, 13:12
Доброго времени суток,господа.
Возникла такая ситуация,есть виджет,при зажатии мыши на котором(pressEvent+timer),происходит смена родителя этого виджета,он помещается на лайаут временного окна для перетаскивания.
Теперь собственно вопрос,если я открепляю виджет(при откреплении виджета releaseEvent соответственно не срабатывает),отжимаю кнопку,а потом начинаю перемещать виджет с зажатой кнопкой(обрабатываю mouseMoveEvent),то всё ок,но мне надо чтобы виджет откреплялся,и без отжатия кнопки тут же я мог делать перемещение.Проблема в том,что без отжатия кнопки мыши,moveEvent не обрабатывается.Как это можно реализовать?Заранее спасибо.


Название: Re: Сохранение мыши в зажатом состоянии на виджете
Отправлено: GreatSnake от Октябрь 28, 2010, 13:17
см. bool QCoreApplication::sendEvent ( QObject * receiver, QEvent * event ) [static]
где
 receiver = открепленный виджет
 event = new QMouseEvent( QEvent::MouseButtonRelease, ... )


Название: Re: Сохранение мыши в зажатом состоянии на виджете
Отправлено: ernie от Октябрь 28, 2010, 13:22
GreatSnake,пробовал,но пока не совсем понимаю какой событие посылать,releaseEvent посылать не нужно,нужно чтобы на откреплённом виджете обрабатывалось moveEvent сразу,как при нажатой кнопке


Название: Re: Сохранение мыши в зажатом состоянии на виджете
Отправлено: GreatSnake от Октябрь 28, 2010, 14:01
Попробуйте использовать QWidget::grabMouse()/QWidget::ungrabMouse()


Название: Re: Сохранение мыши в зажатом состоянии на виджете
Отправлено: ernie от Октябрь 28, 2010, 14:35
GreatSnake,спасибо огромное!то что нужно.Только там не ungrab,а releaseMouse(),но это так,для читающих:)