Qt Quick 应用程序窗口的背景颜色 'color' 无法生效。

4
我用单个main.qml创建了一个简单的Qt Quick应用程序,代码如下所示。问题在于窗口的背景颜色没有设置为#ffffff,而是设置为浅灰色(我认为这是Windows上窗口的默认颜色)。矩形的颜色设置正确。
我正在使用基于Qt 5.4.1的Qt Creator 3.3.1(开源版)在Windows上开发。
import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.3
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2

ApplicationWindow {
    title: qsTr("Hello")
    width: 200
    height: 200
    visible: true
    color: "#FFFFFF"

    Rectangle {
        id: rectangle1
        width: 100
        height: 100
        color: "#ffffff"
    }
}
1个回答

8

ApplicationWindowStyle QML类型为ApplicationWindow提供样式。默认的ApplicationWindowStyle将背景呈现为:

background: Rectangle {
        visible: !styleData.hasColor
        color: SystemPaletteSingleton.window(true)
}

styleData.hasColor属性的定义如下:

property QtObject styleData: QtObject {
    readonly property bool hasColor: window.color != "#ffffff"
}

所以,如果您的ApplicationWindow颜色为#FFFFFF,则在窗口背景上会看到浅灰色矩形。
要使背景变为白色,您需要设置自定义的ApplicationWindowStyle
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    style: ApplicationWindowStyle {
        background: Rectangle {
            color: "#FFFFFF"
        }
    }
}

谢谢您解释它的工作原理。顺便问一下,在Qt文档网站或其他地方,我可以找到这种详细信息的建议吗?在提出这个问题之前,我进行了一些搜索,但没有找到任何有用的东西。我是Qt的新手:) 谢谢。 - zhangwt
1
@zhangwt 你可以在gitorious上查看Qt源代码。 - Meefte
1
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Daniel Saner
1
@Daniel Saner https://dev59.com/tl4b5IYBdhLWcg3wnSwd - Meefte
@DanielSaner 使用“import QtQuick.Controls.Styles 1.4” 解决了我遇到的属性无法识别问题(之前我使用的是1.2版本)。 - mrAlmond

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接