Russian Qt Forum

Qt => Model-View (MV) => Тема начата: NKovalev64 от Февраль 06, 2013, 13:59



Название: QScrollArea прокрутка мышью
Отправлено: NKovalev64 от Февраль 06, 2013, 13:59
На форме есть виджет QscrollArea. Как задать ему прокрутку не скролбарами, а так чтобы можно было зажать мышкой область виджета и "тащить" её.


Название: Re: QScrollArea прокрутка мышью
Отправлено: Bepec от Февраль 06, 2013, 14:26
Отлавливать евенты мыши?


Название: Re: QScrollArea прокрутка мышью
Отправлено: NKovalev64 от Февраль 06, 2013, 14:33
Отлавливать евенты мыши?
Подробнее можно?


Название: Re: QScrollArea прокрутка мышью
Отправлено: Bepec от Февраль 06, 2013, 14:41
Не могу не отозваться на такую вежливую и редкую просьбу.

Есть у виджетов методы
Код:
virtual void	mouseMoveEvent ( QMouseEvent * event )
virtual void mousePressEvent ( QMouseEvent * event )
virtual void mouseReleaseEvent ( QMouseEvent * event )

Соответственно переопределяешь их в наследнике от QWidget (QScrollArea тоже является наследником :) ).

move - получаешь когда мышка двигается при зажатой клавише.
Press/Release - нажатие и отжатие клавиши мышки.

Данные о месторасположении и нажатых клавишах ты можешь получить в QMouseEvent * event.

Соответственно технология

осторожно, псевдокод:
/*
Получаем нажатие правой кнопки, запоминаем координаты в переменной

Пользователь двигает мышку, мы получаем евент move

Смотрим там координаты, вычитаем их от переменной. Двигаем ScrollArea на необходимую величину (какую решай сам)

Пользователь отжимает мышку - очищаем переменную.
*/


Название: Re: QScrollArea прокрутка мышью
Отправлено: NKovalev64 от Февраль 06, 2013, 16:15
Спасибо большое!


Название: Re: QScrollArea прокрутка мышью
Отправлено: Bepec от Февраль 06, 2013, 16:26
На здоровье. Ответить на адекватную просьбу - тоже удовольствие :)

Если всё понятно - добавьте к названию темы [РЕШЕНО] :)

PS если нужна будет консультация - дарую вам однократное право вызова меня в ЛС и призыв меня в скайп/аську :)