QML ComboBox打破了深色模式窗口样式

QML ComboBox breaks dark mode window styling

提问人:Foaly 提问时间:5/8/2023 更新时间:6/1/2023 访问量:92

问:

我在与QML ComboBox相关的Windows上的暗模式中遇到了一个非常奇怪的问题。我在 Windows 11 上使用 Qt 6.5.0 和 MinGW 11.2.0。

我遇到的问题是,一旦我将 ComboBox 添加到场景中,深色模式样式自动检测就会中断。

以以下最小示例为例:

import QtQuick
import QtQuick.Controls

ApplicationWindow {
    width: 800
    height: 600
    visible: true

    menuBar: MenuBar {
        Menu {
            title: qsTr("File")
            Action {
                text: qsTr("&Quit")
                shortcut: StandardKey.Quit
                onTriggered: Qt.quit();
            }
        }
    }

    Rectangle {
        anchors.fill: parent
        color: "darkred"
    }

//    ComboBox {
//        model: ["First", "Second", "Third"]
//    }
}

Everthing 看起来不错,菜单的样式符合系统设置。它们被设置为深色模式。

enter image description here

一旦我取消对上面示例中 ComboBox 元素的注释,样式就会中断,菜单就会回到浅色模式......是我在这里做错了什么,还是这是一个Qt错误?如果有人有一些信息,将不胜感激:)

enter image description here

Qt QML暗模式

评论


答:

0赞 surge10 5/9/2023 #1

您应该考虑使用通用样式,这是使用 Windows 通用样式的更具体的方法

import QtQuick.Controls.Universal

ApplicationWindow {
    width: 800
    height: 600
    visible: true

    Universal.theme: Universal.Dark

    menuBar: MenuBar {
        Menu {
            title: qsTr("File")
            Action {
                text: qsTr("&Quit")
                shortcut: StandardKey.Quit
                onTriggered: Qt.quit();
            }
        }
    }

    Rectangle {
        anchors.fill: parent
        color: "darkred"
    }

    ComboBox {
        model: ["First", "Second", "Third"]
   }
}

评论

0赞 Foaly 5/9/2023
确实如此。但是,为什么要使用“通用”主题而不是“Windows”主题呢?这种行为仍然感觉像是,但对我来说......
1赞 Foaly 6/1/2023 #2

这是一个Qt错误,现在已修复:)

https://bugreports.qt.io/browse/QTBUG-113469