Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: PinkPanther от Январь 05, 2009, 04:27



Название: Проблемы с палитрой (не могу сменить бэкграунд виджета)
Отправлено: PinkPanther от Январь 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.


Название: Re: Проблемы с палитрой (не могу сменить бэкграунд виджета)
Отправлено: Dendy от Январь 05, 2009, 04:35
Вместо QPalette::Base -> QPalette::Window
Вместо QPalette::Text -> QPalette::WindowText

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


Название: Re: Проблемы с палитрой (не могу сменить бэкграунд виджета)
Отправлено: PinkPanther от Январь 05, 2009, 16:27
Вместо QPalette::Base -> QPalette::Window
Вместо QPalette::Text -> QPalette::WindowText

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

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