Search code examples
macosqtqmldarkmode

How to handle system Dark mode in QML


I'm using QML + Python to create a multi-platform application. Facing a challenge with handling System Dark Mode (not sure if it applies to Windows, but I'm currently using a Mac).

For now I do set Dark / Light mode manually, using property. Is there any way I can detect user's mode and set this value to my property? Or are there any other possible solutions?

import QtCore
import QtQuick
import QtQuick.Controls
import QtQuick.Dialogs

ApplicationWindow {
    width: 640
    height: 480
    visible: true
    property bool darkMode: false
    
    Text {
        id: textField
        color: {
            switch (darkMode) {
                case true:
                    "white";
                    break;
                case false:
                    "black";
                    break;
            }
         }
    }
}

Solution

  • From Qt 6.5 onwards you can simply do:

    property bool darkMode: Application.styleHints.colorScheme === Qt.ColorScheme.Dark