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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы с палитрой (не могу сменить бэкграунд виджета)  (Прочитано 7477 раз)
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« : Январь 05, 2009, 04:27 »

Господа!

Написал небольшую утилитку, которая, в частности, просит ввести данные, и, в случае несоответствия, собирает и выкидывает диалог с развернутым описанием ошибки (диалог пока не в виде отдельного класса, я просто накидал его начерно руками, внутрь блока обработчика ошибки). Вот кусок кода, который призван менять цвет фона метки (QLabel) диалога:

Код:
QDialog error;
QVBoxLayout *main = new QVBoxLayout;
QLabel *errPrompt = new QLabel(tr("Error!"));

... skipped ...

QPalette pal(errPrompt->palette());
pal.setColor(QPalette::Base, Qt::red);
pal.setColor(QPalette::Text, Qt::yellow);
errPrompt->setPalette(pal);

... skipped ...

main->addWidget(errPrompt, 0);
error.setLayout(main);
error.exec();

Лишнее я поскипал, т.к. ничего интересного в остальном коде типовая инициализация других виджетов диалога. В результате работы этого кода диалог появляется и полностью функционален, но фон метки остаётся серым, а цвет текста Error! - чёрным. Проверки ради применил палитру глобально, т.е. добавил QApplication::setPalette(pal); В масштабе приложения все замечательно работает, и становится красно-желтым. Подскажите, плиз - это баг или у меня где-то закрался ляп? Сборка Qt динамическая, 4.4.3, под Win32-VS2008.
Записан

Эвтаназия - наше хобби!
Dendy
Гость
« Ответ #1 : Январь 05, 2009, 04:35 »

Вместо QPalette::Base -> QPalette::Window
Вместо QPalette::Text -> QPalette::WindowText

Почему - читать в Ассистанте.
Записан
PinkPanther
Самовар
**
Offline Offline

Сообщений: 169



Просмотр профиля
« Ответ #2 : Январь 05, 2009, 16:27 »

Вместо QPalette::Base -> QPalette::Window
Вместо QPalette::Text -> QPalette::WindowText

Почему - читать в Ассистанте.

Спасибо за совет!
Проблема решилась, с цветом текста - сразу, а с цветом фона - после запуска виджетовских методов setAutoFillBackground(true);
Правда, почему-то глобальные настройки аппликации не хотят влиять на цвет надписи групбокса, но это не так страшно.
Записан

Эвтаназия - наше хобби!
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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