Qt quick ApplicationWindow 'color' для цвета фона не работает

Я создал простое быстрое приложение Qt с одним main.qml, как в приведенном ниже коде. Проблема в том, что цвет фона окна не был установлен на #ffffffвместо этого он установлен на светло-серый (по умолчанию цвет окна в Windows я думал). Цвет прямоугольника установлен правильно.

Я использую Qt Creator 3.3.1 (opensource) на основе Qt 5.4.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 ответ

Решение

ApplicationWindowStyle QML Type обеспечивает стилизацию для 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"
        }
    }
}
Другие вопросы по тегам