Russian Qt Forum

Qt => Qt Quick => Тема начата: juvf от Апрель 01, 2022, 11:59



Название: Виджет настройки
Отправлено: juvf от Апрель 01, 2022, 11:59
Всем доброго дня.

В прикреплении картинка виджета, который я бы хотел реализовать на QML. Это колесо настройки (вертикальное или горизонтальное)....
Суть: в центр виджета палец(мышку) ставишь и тянешь вправо-влево... вся линейка со шкалой начинает двигаться вместе с пальцем (наподобе слайдера). У виджета должно быть свойство currentValue, step1 и step2, инерция.
step1 - это минимальное значение на которое изменится currentValue, а step2 - это минимальное расстояние, на которое надо протянуть виджет, чтобы изменился currentValue.
Т.е. если step1 = 100, а step2 = 50 (пикселе/мм/inch/pt/попугев), то если протянуть виджет на 150 пикселей, то currentValue изменится на 300.

Ну и если по виджету чиркнуть, то прокрутка должна быть инертная и по инерции промотать какое-то кол-во  до остановки. Вобщем аналог механического инертного колеса настройки.

Как подобное реализовать? Может есть похожий пример где в гугле? Даже не знаю как сформулировать поиск, чтоб похожее найти. Или может кто подкинет мыслеформу, как подобное реализовать в QML?


Название: Re: Виджет настройки
Отправлено: Igors от Апрель 01, 2022, 13:49
А зачем виджет и QML? (цыганщиной отдает). Это стандартная операция pan(orama), обычно с зажатой клавишей пробел. Ее всегда надо делать


Название: Re: Виджет настройки
Отправлено: juvf от Апрель 01, 2022, 14:03
А зачем виджет и QML? (цыганщиной отдает).

goto wikipedia (https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D0%B0)
Элеме́нт интерфе́йса — примитив графического интерфейса пользователя. Другие названия: элемент управления, ви́джет (англ. widget).

Свой кастомный виджет (или элемент управления) можно реализовать с помощью каких то базовых виджетов или с нуля Qt, QML, GrLib, LVGL,....

Цитировать
Это стандартная операция pan(orama)
что за операция?


Название: Re: Виджет настройки
Отправлено: Igors от Апрель 01, 2022, 14:17
что за операция?
Откройте напр картинку в фотошопе и наведите на нее мышу. Нажмите пробел - курсор "рука" покажет что можно двигать картинку. Вот это и есть "pan", т.е. др способ скроллирования, часто более удобный.  Конечно нужна QScrollArea и вычислять величину сдвига - этого никто не отменял


Название: Re: Виджет настройки
Отправлено: juvf от Апрель 01, 2022, 14:23
к сожелению нет фотошопа.... про QScrollArea....

т.е. делаю прямоугольник, заполняю его беру QScrollArea. у QScrollArea убираю видимые скролбары... потом рисую картинку шкалы (допустим в png), размещяю эту картинку в QScrollArea и.... зациклить QScrollArea?  а у QScrollArea можно зациклить сдвиг?

ps а теперь бы всё тоже самое, только на QML.


Название: Re: Виджет настройки
Отправлено: Igors от Апрель 01, 2022, 15:11
размещяю эту картинку в QScrollArea и....
И вычислить насколько скроллить. Напр я делал так
Код
C++ (Qt)
bool DisplayWin::DragPan( QMouseEvent * e )
{
QPointF org = mImageArea->widget()->mapFrom(mImageArea, QPoint(1, 1));
QPointF ofs = e->localPos() - org;
QPointF scroll = mDragPos - ofs;
HScroll()->setValue(scroll.x());
VScroll()->setValue(scroll.y());
 
return true;
}
 
Где mDragPos = e->localPos() при первом нажатии мыши. Если картинка масштабится или это 3D - вычисления будут сложнее

только на QML.
Цацка для пижонов