Russian Qt Forum
Май 04, 2024, 08:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Редактирование preferences (цвет окон)  (Прочитано 4996 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Сентябрь 16, 2014, 13:57 »

Добрый день

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

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

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

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

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

Спасибо
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 16, 2014, 14:03 »

1 метод не пойдёт? просто метод изменения цвета.
И 1 переменная цвета бывшего ранее.

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

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

Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Сентябрь 16, 2014, 14:28 »

Если юзер изменил там цвет - все окна должны перерисоваться немедленно, чтобы был виден рез-т.
Коли такая политика, то ни каких Ok/Cancel быть не должно.
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #3 : Сентябрь 16, 2014, 15:28 »

По-моему логично Ok Cancel. К тому же в примерах Qt такая же логика имеется.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Сентябрь 16, 2014, 15:33 »

По-моему логично Ok Cancel. К тому же в примерах Qt такая же логика имеется.
Коли есть Ok и Cancel, то в таком случае должна быть Apply.
Если изменение настроек применяется сразу, то кроме как Close больше ничего не должно быть.
Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #5 : Сентябрь 16, 2014, 16:00 »

ну сценариев всего 3:
1) Изменить цвет.
2) Изменить цвет на default.
3) Вернуть как было.

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

PS как было цвет != default
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Сентябрь 16, 2014, 16:22 »

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

PS. похоже есть непонимание.
Я пытаюсь сказать, что если есть Ok/Cancel, то применять настройки сразу по их изменению нельзя.
Делать это нужно либо по OK, либо по Apply.
Если требуется сразу, то от Ok/Cancel нужно отказываться.
« Последнее редактирование: Сентябрь 16, 2014, 16:28 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Bepec
Гость
« Ответ #7 : Сентябрь 16, 2014, 16:57 »

Это же предпросмотр. Удобно и нет нужды применять изменения. Посмотрел 10 вариантов, выбрал/отказался от одного.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Сентябрь 16, 2014, 17:14 »

Это же предпросмотр. Удобно и нет нужды применять изменения. Посмотрел 10 вариантов, выбрал/отказался от одного.
Это называется кривой GUI, т.к. получаем неоднозначное поведение.
Записан

Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Сентябрь 16, 2014, 17:15 »

Я пытаюсь сказать, что если есть Ok/Cancel, то применять настройки сразу по их изменению нельзя.
Я понял, так и сделано для всех остальных настроек. Но с цветом тот же подход очень неудобен - может понадобиться масса "подкруток", не пере-открывать же диалог всякий раз (точнее даже 2 диалога, второй по нажатию ColorBox)
Записан
Bepec
Гость
« Ответ #10 : Сентябрь 16, 2014, 17:34 »

Неоднозначное - это как? Все диалоги неоднозначны. У них как минимум 2 значения Веселый Мб не тот термин написали?

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

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Сентябрь 16, 2014, 17:39 »

Неоднозначное - это как?
Именно неоднозначное, т.к. одни применяются сразу, а другие по Ok.

Цитировать
Все диалоги неоднозначны.
С чего это вдруг Непонимающий Если Ok/Cancel то либо выбор применяется либо нет. Друго быть не должно.
« Последнее редактирование: Сентябрь 16, 2014, 17:41 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 23.