Название: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 09:39 есть виджэт внутри scrollarea но я хочу чтобы можно было таскать его вертикально нетолько за ползунок скрола но и внутри самого виджэта. То есть в свободном месте виджэта (где нет других элементов) нажимаю кнопку мыши тяну и опускаю.
Как это правильно реализовать? Название: Re: Тянуть виджэт мышой Отправлено: lit-uriy от Июль 29, 2010, 11:45 ловить события мыши и в зависимости от перемещения мыши смещать область прокрутки (QScrollArea)
* Можно поставить фильтр событий на область прокрутки в родительском виджете * можно сделать наследника от этой области прокрутки, и там обрабатывать события мыши. Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 12:30 Немного не доганяю. У виджэта который внутри ScrollArea я должэн менять mouseMoveEvent.
Но как его связать с перемещением ScrollArea не доганяю. Если с помощью ScrollBar то не понятно как позицыю мыши связать с например ScrollBar.setPosition(int) направте Название: Re: Тянуть виджэт мышой Отправлено: Kolobok от Июль 29, 2010, 13:08 Возьми QGraphicsView.
Название: Re: Тянуть виджэт мышой Отправлено: lit-uriy от Июль 29, 2010, 13:10 >>У виджэта который внутри ScrollArea я должэн менять mouseMoveEvent.
Хм, может я не понял: >>То есть в свободном месте виджэта здесь имелось в виду не свободное место на ScrollArea? Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 13:17 Название: Re: Тянуть виджэт мышой Отправлено: Kolobok от Июль 29, 2010, 13:21 Почему? Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 13:34 Обясню по другому :)
есть виджэт в котором много других элементов. Но также там есть немного свободного места. этот виджэт помещен в скроларею. Можно тягать за скроллареу, а можно и за свободное место внутри виджэта. Тоесть перемещение нажатой мыши должно влиять на перемещение скролбара. У меня получается через SrollBar.setPosition но перемещается оно тупо. Чтобы показать наглядно что мне нужно возьмем пример с вертикальным перемещением. Берем любое Qtшное окно с вертикальным скроллбаром. Хватаем его (скроллбар) и неотпуская отодвгаем мышь влево. Двигаем вверх/вниз - вроде мышь над виджетом но красиво двигает скроллбар - вот так мне нада SrollBar.setPosition устанавливает позицию слайдера в сваих единицах, а как их связать с координатами мыши внутри виджэта - непонятно Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 13:38 Почему? потому что это левая Qtшная програма со своими сложными элементами. Я туда вклиниваюсь с помощью PyQt и просто должэн подправить ужэ готовый сложный виджэт - в моем случае это просто установка своих filterEvent. То есть понятно что перелопачивать все это и связывать с QGraphicsView мне неохота - да и нелогично это тк моя задача судя повсему решается просто - нада токо чтобы направили Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 14:08 Мне в голову приходит такое:
1. в mousePressEvent я запоминаю координаты мыши в виджете 2. в mouseMoveEvent узнаю разницу между текущим положением и запомненым ранее. Но мне нада какбы не ScrollBar передвинуть програмным путем а контент скролареи в которую он помещен сдвинуть вверх/вниз на ту разницу какбы все просто но как переместить контент на N-ое количество пикселей я не понимаю или просто ненашэл в доках Название: Re: Тянуть виджэт мышой Отправлено: Kolobok от Июль 29, 2010, 14:42 Код: QScrollArea::horizontalScrollBar()->setValue( int ) Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 15:02 вот мой код
но оно уезжает. Это проще увидеть. мож есть у кого желание - запустите - а то запарился уже. Задача вроде простая... Код
Название: Re: Тянуть виджэт мышой Отправлено: Blayder от Июль 29, 2010, 15:03 Как раз как-то делал тоже самое задание.
Код: void mousePressEvent(QMouseEvent *e) { Такой код в итоге. Сам я не спец в этом и делал с помощью гугля иметода тыка :) Название: Re: Тянуть виджэт мышой Отправлено: lit-uriy от Июль 29, 2010, 15:38 vux, ты устанавливаешь скролу жёсткое значение, а его нужно смещать, как у Blayder. Т.е. вычитать смещение мыши из текущего значения скрола
Название: Re: Тянуть виджэт мышой Отправлено: vux от Июль 29, 2010, 15:47 Все работает :D Всем большое спасиба!
|