Я занимаюсь разработкой приложения Qt4 и запускаю его под gnome, но мне бы очень хотелось использовать системную тему KDE (Oxygen) и цветовую схему (Obsidian Coast). К сожалению, приложение не реагирует на изменения в systemsettings
,
По крайней мере, я могу заставить приложение использовать программную тему, которую я хочу, установив QStyle:
QApplication app( argc, argv );
app.setStyle(QStyleFactory::create("oxygen"));
но я не знаю подобного подхода к настройке цветовой схемы, и в любом случае это уродливо.
Интересно, что я уже разработал несколько приложений PyQt4 на этой же машине, и они получают изменения в systemsettings
просто хорошо. Я не совсем уверен, почему приложение C ++ Qt4 будет вести себя по-другому.
Еще одно замечание: я заметил, что изменение внешнего вида окна с помощью диалога gnome повлияет на внешний вид моего окна C ++ qt — так что, возможно, Gnome каким-то образом переопределяет мою конфигурацию KDE?
Единственное решение, которое я нашел, — позволить окружающей среде сделать работу за вас, как отмечалось здесь: https://forum.kde.org/viewtopic.php?f=17&т = 90720
Отрывок из постов:
Итак, вы хотите запустить Amarok с другой цветовой схемой, чем у остальных KDE?
Вы можете сделать это с помощью другого набора настроек.Откройте Konsole и введите «export KDEHOME = $ HOME / .kde4-amarok /». Затем запустите «systemsettings» и настройте способ отображения Amarok (цветовая схема и т. Д.).
Наконец, запустите «amarok», чтобы запустить сам Amarok.
Это будет работать и для приложений QT, но вы не можете установить стиль из приложения, как пытаетесь (app.setStyle(QStyleFactory::create("oxygen");
Вы должны будете использовать немного более грязный метод:
sys.argv.append("--style=Oxygen")
Это прочитает аргумент из среды и не создаст совершенно новый экземпляр темы Oxygen (при условии, что вы установили KDEHOME
где-то в вашем проекте, и вы уже настроили это), а затем будете использовать это KDEHOME
читать цвета и использовать Oxygen
тема.
Может быть, они изменят это для QT5 … (Возможность устанавливать стиль программно)
Других решений пока нет …