Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Октябрь 31, 2018, 17:10



Название: Скроллер времени
Отправлено: Igors от Октябрь 31, 2018, 17:10
Добрый день

Окно имеет 6 панелек (одновременно видимы 3). В каждой по скроллеру, из них 5 в принципе обычные (хотя и написан свой контрол), скроллируют "по пикселю" или "по айтему". А вот один попался урод - скроллер времени. Прокручиваемый диапазон может быть или мал  (напр 0.0001-0.0002) или наоборот, велик. Вылазят такие проблемки:

1) Что давать уроду в setMinimum/setMaximum/setValue? Заманчиво сделать все double (кастомный контрол все равно имеем)

2) Как-то обобщить поведение этого урода с нормальными. Панелька - класс, у нее есть член - указатель на скроллер. Допустим для проблемы 1 решаем "просто пиксели" - тогда всякий раз нужно проверять "а какой это скроллер", и это невыносимо.

Ф-ционал скроллера времени в принципе как у обычного. Напр юзер тыкнул мышей - определить какому времени это соответствует, ну или наоборот, нарисовать что-то в пикселе для заданного воемени. Разумеется есть "масштаб" - множитель для перевода пиксели<->время

Какие есть соображения?

Спасибо 


Название: Re: Скроллер времени
Отправлено: deMax от Ноябрь 01, 2018, 10:23
У вас QSlider или QScrollBar?

1) да хоть int, просто выводите нужный текст.

Вообще для времени неплохо сделать элемент с дизайном как в  youtube или музыкальном редакторе(если масштаб важен).


Название: Re: Скроллер времени
Отправлено: Igors от Ноябрь 01, 2018, 15:54
Скроллер времени работает так же как и скроллер пр-ва, только в одном измерении. Помимо самого скроллера есть обязательные контролы для масштаба: Fit, Zoom In, Zoom Out, в аттаче пример их применения. Общее время конечно известно, но редактирование возможно не только в этом интервале, но и за его пределами.


Название: Re: Скроллер времени
Отправлено: Igors от Ноябрь 02, 2018, 11:39
Пусть юзер зумит так что график становится меньше и меньше (потом станет точкой и даже исчезнет). Очевидно в какой-то момент скроллер должен стать неактивным (min = max = value), скроллить нечего.

Теперь наоборот, юзер увеличивает график по X, и вот он уже не влазит в область просмотра, нужно активировать скроллер. Но какие параметры ему выставить? Сам скроллер ничего не имеет (min = max = value). Да, есть текущий масштаб (zoom), ну и что с этим делать?

Отсюда ясно - нужны какие-то еще (хранимые) данные, просто скроллер+масштаб недостаточно. Но какие, или "как их организовать"?

Ну и вообще, не раз приходилось слышать что "важнейшим из всех искусств для нас является UI". Ладно, вот UI, почему никого нету? Все ушли "собирать", что ли?  :)   


Название: Re: Скроллер времени
Отправлено: deMax от Ноябрь 02, 2018, 11:56
так же как и скроллер пр-ва,
не могу расшифровать сокращение.

p.s. пока не очень понятно в чем проблема и что хотите? Вы хотите QSlider использовать для задания масштаба и позиции? Чем QScrollBar не устраивает?
p.s.s. при разговоре о дизайне неплохо ссылаться на компоненты или картинки, а то у всех фантазия разная.


Название: Re: Скроллер времени
Отправлено: deMax от Ноябрь 02, 2018, 11:59
На что должен быть похож скроллер и что он должен делать?

Музыкальному плееру хватает обычного ползунка с точностью пару процентов, в редакторах звука есть полоса которая масштабируется колесиком мышки и позволяет удобно перемещаться по редактируемому файлу и точное позиционирование.


Название: Re: Скроллер времени
Отправлено: Igors от Ноябрь 02, 2018, 16:28
..в редакторах звука есть полоса которая масштабируется колесиком мышки и позволяет удобно перемещаться по редактируемому файлу и точное позиционирование.
Это вполне "в тему". Есть скроллер, как о сам выглядит - неважно, пусть хоть обычный QScrollBar для прокрутки графика (см рисунки выше). Как пересчитать параметры скроллера если масштаб графика меняется др контролом(ами)?