你好!
我正在使用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应用似乎总是处于亮模式。
我已经尝试过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主题提供了更好的支持并继续关注。
如果您感觉更好,我接受并说谢谢。