Qt QML无法在macOS上正确处理暗模式?

问题描述 投票:2回答:1

你好!

我正在使用QML在macOS上编写应用程序。版本是5.14.0,因此支持暗模式。在QWidget应用程序中,似乎管理得很好,但是在QML应用程序中,整个界面的颜色都不正确。

例如,使用这个小应用程序:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 1.2

Window {
    id : app

    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Label {
        id : label
        text: qsTr("Hello Word")
    }

    Component.onCompleted: {
        console.log("App color : " + app.color);
        console.log("Label color : " + label.color);
    }
}

在浅色模式下,文本颜色为d8ffffff很好,但是在深色模式下,文本变为白色(d8000000),背景颜色不变。

我有一个快速的肮脏修复程序:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 1.2

Window {
    id : app

    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    color : if( label.color == "#d8000000" ) "#fff"; else "#000";

    Label {
        id : label
        text: qsTr("Hello Word")
    }

    Component.onCompleted: {
        console.log("App color : " + app.color);
        console.log("Label color : " + label.color);
    }
}

但是这并不漂亮,甚至没有失败……有人遇到问题了吗?我找不到很多,但可能没有正确搜索。有更好的解决方案吗?预先感谢。

编辑:

我尝试使用不同版本的导入QtQuick.Controls,带有:

import QtQuick.Controls 2.2

我的QML应用似乎总是处于亮模式。

macos qt qml macos-darkmode
1个回答
0
投票

我已经尝试过QtQuick.Controls 1和2的某些版本,而QtQuick.Controls 1.6似乎可以正常工作。背景颜色随文本颜色而变化。

复制:

import QtQuick 2.12
import QtQuick.Controls 1.6

ApplicationWindow {
    id : app

    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Label {
        id : label
        text: qsTr("Hello Word")
    }
}

但是我不想使用它,因为它已被弃用,我将保留我的丑陋修复程序,并等待看看更新是否为Dark主题提供了更好的支持并继续关注。

如果您感觉更好,我接受并说谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.