Important: Please read the Qt Code of Conduct -

[Solved] QPalette and SystemPalette

  • Hello,

    First of all, I am new to Qt/QML, so sorry if my post is confusing but I'm confused myself. I'll try to be specific.
    I have an app that uses C++/QML integration. I want my visual elements to have a consistent look, so I need to use SystemPalette. For example, if I have in qml:

    @SystemPalette {id: myPalette; colorGroup: SystemPalette.Active }@

    then for some text element I can do:

    @Text { id: myText; color: myPalette.text }@

    However, the default colors that I get from SystemPalette don't suit my needs.
    I read that you can set QPalette colors in the C++ code and then set the custom palette as app palette:

    @QPalette customPalette = myApp->palette();
    customPalette.setColor(QPalette::WindowText, QColor("red"));

    but this had no effect for me and I don't see what I am missing here.

    My question: Is there a way to change the default SystemPalette colors? Or alternatively, how do I use my customPalette from qml?

  • I haven't tried it but you are using the "WindowText" role on the C++ side and the "Text" role on the qml side. Perhaps you can simply change your C++ code to:
    @customPalette.setColor(QPalette::Text, QColor("red"));@

  • I knew it was something that simple. Thanks for pointing it out!

Log in to reply