Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: a_goodgirl от Май 14, 2012, 12:49



Название: системные цвета
Отправлено: a_goodgirl от Май 14, 2012, 12:49
Здравствуйте! Задавала вопрос на форуме CrossPlatform, никто не ответил..
Попробую здесь:

Нужно получить системные цвета (цвет фона заголовка, текста заголовка, рамки и т.д.).

Для Windows можно взять ::GetSysColor с константами типа COLOR_ACTIVEBORDER, COLOR_ACTIVECAPTION и так далее.
Для других платформ пытаюсь использовать qApp->palette().color с разными QPalette::ColorRole (например, QPalette::ButtonText - цвет текста в кнопке).

Но дело в том, что ColorRole гораздо меньше, чем констант в Windows !

например, для COLOR_ACTIVEBORDER, COLOR_ACTIVECAPTION, COLOR_GRAYTEXT и т.д. (у меня получилось 13 штук таких) никакого соответствия в ColorRole не находится..
Как бы это задать?


Название: Re: системные цвета
Отправлено: GreatSnake от Май 14, 2012, 12:57
Как бы это задать?
Увы никак :(
Дело в том, что декорациями окна управляет WindowManager (WM), которых под X11 великое множество. И, насколько мне известно, не существует стандарта, которым бы описывалось API доступа к WM, для получения ресурсов описывающих декорации окна.


Название: Re: системные цвета
Отправлено: a_goodgirl от Май 14, 2012, 16:21
ну откуда-то qt берет цвета, когда рисует окно (заголовок, цвет шрифта заголовка, рамку и т.д.)


Название: Re: системные цвета
Отправлено: GreatSnake от Май 14, 2012, 16:29
ну откуда-то qt берет цвета, когда рисует окно (заголовок, цвет шрифта заголовка, рамку и т.д.)
Qt рисует декорации только своих под-окон в режиме MDI либо в QGraphicsProxyWidget. Во всех других случаях декорации рисует WM, т.е. совершенно другой процесс.