Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Сентябрь 16, 2014, 13:57



Название: Редактирование preferences (цвет окон)
Отправлено: Igors от Сентябрь 16, 2014, 13:57
Добрый день

Почему-то испытываю затруднения с казалось бы очень простой задачей. Есть модальный диалог в котором, помимо всего прочего, есть настройка background цвета всех окон приложения. Есть такие контролы

- сам виджет цвета (назовем его ColorBox). Если юзер изменил там цвет - все окна должны перерисоваться немедленно, чтобы был виден рез-т.

- кнопка Default (рядом с ColorBox). Ставиться цвет по умолчанию и все окна перерисовываются
 
- общая кнопка Reset для сброса  всех установок, для цвета ф-ционал тот же что и Default

- Ok и Cancel кнопки - стандартно, принять или отменить. Разумеется при отмене цвет надо вернуть на исходный если он был изменен.

И что-то у меня выходит как-то длинно, откуда-то вылазят переменные, методы. Наверное перемудрил. А как бы Вы делали?

Спасибо


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Bepec от Сентябрь 16, 2014, 14:03
1 метод не пойдёт? просто метод изменения цвета.
И 1 переменная цвета бывшего ранее.

Переменная цвета бывшего ранее заполняется в конструкторе и не меняется в течении всей жизни диалога.

Изменяемый цвет будет храниться в самом colorBox.
default и reset вызовут метод с константным цветом (#000000 допустим).
Ok - вызываем метод с цветом из colorBox и передаём его наружу (куда то, чтоб он там был запомнен).
Cancel - вызываем метод с переменной цвета бывшего ранее.



Название: Re: Редактирование preferences (цвет окон)
Отправлено: GreatSnake от Сентябрь 16, 2014, 14:28
Если юзер изменил там цвет - все окна должны перерисоваться немедленно, чтобы был виден рез-т.
Коли такая политика, то ни каких Ok/Cancel быть не должно.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Bepec от Сентябрь 16, 2014, 15:28
По-моему логично Ok Cancel. К тому же в примерах Qt такая же логика имеется.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: GreatSnake от Сентябрь 16, 2014, 15:33
По-моему логично Ok Cancel. К тому же в примерах Qt такая же логика имеется.
Коли есть Ok и Cancel, то в таком случае должна быть Apply.
Если изменение настроек применяется сразу, то кроме как Close больше ничего не должно быть.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Bepec от Сентябрь 16, 2014, 16:00
ну сценариев всего 3:
1) Изменить цвет.
2) Изменить цвет на default.
3) Вернуть как было.

Как в вашем случае можно выполнить 3 сценарий без Ok-Cancel?

PS как было цвет != default


Название: Re: Редактирование preferences (цвет окон)
Отправлено: GreatSnake от Сентябрь 16, 2014, 16:22
Как в вашем случае можно выполнить 3 сценарий без Ok-Cancel?
А он обязательно нужен?
Посмотри на современные интерфейсы - Ok-Cancel - это уже анахронизм)

PS. похоже есть непонимание.
Я пытаюсь сказать, что если есть Ok/Cancel, то применять настройки сразу по их изменению нельзя.
Делать это нужно либо по OK, либо по Apply.
Если требуется сразу, то от Ok/Cancel нужно отказываться.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Bepec от Сентябрь 16, 2014, 16:57
Это же предпросмотр. Удобно и нет нужды применять изменения. Посмотрел 10 вариантов, выбрал/отказался от одного.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: GreatSnake от Сентябрь 16, 2014, 17:14
Это же предпросмотр. Удобно и нет нужды применять изменения. Посмотрел 10 вариантов, выбрал/отказался от одного.
Это называется кривой GUI, т.к. получаем неоднозначное поведение.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Igors от Сентябрь 16, 2014, 17:15
Я пытаюсь сказать, что если есть Ok/Cancel, то применять настройки сразу по их изменению нельзя.
Я понял, так и сделано для всех остальных настроек. Но с цветом тот же подход очень неудобен - может понадобиться масса "подкруток", не пере-открывать же диалог всякий раз (точнее даже 2 диалога, второй по нажатию ColorBox)


Название: Re: Редактирование preferences (цвет окон)
Отправлено: Bepec от Сентябрь 16, 2014, 17:34
Неоднозначное - это как? Все диалоги неоднозначны. У них как минимум 2 значения :D Мб не тот термин написали?

В принципе можно разве что заменить названия кнопок, вместо безликих ok cancel на что-нибудь более подходящее.


Название: Re: Редактирование preferences (цвет окон)
Отправлено: GreatSnake от Сентябрь 16, 2014, 17:39
Неоднозначное - это как?
Именно неоднозначное, т.к. одни применяются сразу, а другие по Ok.

Цитировать
Все диалоги неоднозначны.
С чего это вдруг ??? Если Ok/Cancel то либо выбор применяется либо нет. Друго быть не должно.