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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPalette::ColorGroup  (Прочитано 4962 раз)
spectre71
Гость
« : Ноябрь 13, 2009, 23:19 »

QT 4.5.2
Цитировать
The Active group is used for the window that has keyboard focus.
The Inactive group is used for other windows.
The Disabled group is used for widgets (not windows) that are disabled for some reason.

- "Active" группа используется для окна, обладающего фокусом ввода.
- "Inactive" группа используется для других окон.
- "Disabled" группа используется для виджетов (не окон), которые, недоступны(блокированы) по некоторым причинам.

Кому-нибудь кажется что здесь есть концептуальные ошибки? Или у меня глюки. Обеспокоенный Улыбающийся
Записан
MoPDoBoPoT
Гость
« Ответ #1 : Ноябрь 13, 2009, 23:50 »

В упор не вижу  Улыбающийся
Active - активное состояние виджета (когда isEnabled()==true и окно этого виджета имеет фокус)
Inactive - неактивное (когда isEnabled()==true и окно этого виджета не имеет фокус)
Disabled - недоступное (когда isEnabled()==false).
По-моему они самодостаточны.
Записан
spectre71
Гость
« Ответ #2 : Ноябрь 14, 2009, 00:07 »

В упор не вижу  Улыбающийся
Active - активное состояние виджета (когда isEnabled()==true и окно этого виджета имеет фокус)
Inactive - неактивное (когда isEnabled()==true и окно этого виджета не имеет фокус)
Disabled - недоступное (когда isEnabled()==false).
По-моему они самодостаточны.

Выше привел выдержку из доки.
Только Disabled относится к виджету! Остальное к окну!
Записан
MoPDoBoPoT
Гость
« Ответ #3 : Ноябрь 15, 2009, 17:07 »

Я в англиЦком не особо силен, но поведение именно такое, какое я описал.
Записан
spectre71
Гость
« Ответ #4 : Ноябрь 16, 2009, 14:16 »

Ладно, допустим что в доке ошибка. Улыбающийся Хотя ошибка в самой концепции групп.

Привиду простой пример:
- берем таблицу QTableView;
- делаем  модель QAbstractItemModel;
- в модели несколько колонок;
- для всех колонок возвращаем флаг Qt::ItemIsSelectable;
- для всех колонок кроме одной возвращаем флаг Qt::ItemIsEnabled;
- выставляем режим селектирования полной строки;
И получаем ерунду, смотрите картинки:
focused.png - QTableView - имеет фокус ввода
nofocused.png - QTableView - не имеет фокус ввода
Элементы в колонке "Task Name" не имеют флага Qt::ItemIsEnabled
====
Уже как минимум должны быть не 3, а 4 группы
Active, Inactive, ActiveDisabled, InactiveDisabled
А лучше два флага "bool Active" и "bool Enabled":
вместо method(ColorGroup cg, ...) - method(bool Active, bool Enabled, ...)



Записан
MoPDoBoPoT
Гость
« Ответ #5 : Ноябрь 16, 2009, 22:16 »

Действительно, смотрится как-то не эстетично  Улыбающийся
Мне кажется это как минимум багрепорт.
Записан
spectre71
Гость
« Ответ #6 : Ноябрь 16, 2009, 22:47 »

Действительно, смотрится как-то не эстетично  Улыбающийся
Мне кажется это как минимум багрепорт.

Как минимум.

На самом деле просто когда разрабатывали QPalette::ColorGroup не до конца продумали.  Грустный
Сейчас Disabled - отдельный вариант, но это не правильно, это отдельная(независимая) мода, хоть и не часто в этом есть необходимость.

На мой взгляд в группах палитры нужены как минимум 4 независымых режима + возможность расширения своими.
4 режима:
bool Active
bool Enabled
bool Highlight - поскольку может быть применим не только к BackGround или Text(ForeGround)
bool Special - зависит от контекста использования(зависит от компонента), в большинстве случаев нужен для отрисовки в режиме удержания компонента левой кнопкой мыши например, Sunken для Buttons, CheckBox, ...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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