如何更改 QtQuick Window 的背景颜色?

How do I change the background color of a QtQuick Window?

我正在尝试创建一个简单的 QML 应用程序。 QML文件很简单:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
   id: root
   objectName: "window"
   visible: true
   width: 800
   height: 480
   color: "#16FF16"
}

我正在使用以下 C++ 代码:

QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/qml/main.qml"));
QObject *topLevel = engine.rootObjects().value(0);
QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);
//window->setFlags(Qt::Widget|Qt::FramelessWindowHint);
window->show();
return app.exec();

这表明 window 很好,背景颜色如预期的那样有点绿。但是,一旦我取消注释该行:

window->setFlags(Qt::Widget|Qt::FramelessWindowHint);

window 现在总是显示为黑色!

如何设置这个无框 属性 而不会产生这些意想不到的副作用?

我不确定为什么 window 对您显示为黑色。也许是因为 Qt::Widget 标志。

然而,这有效并且实际上更简单,因为它将所有 UI 代码保存在 QML 中:

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
   id: root
   objectName: "window"
   visible: true
   width: 800
   height: 480
   color: "#16FF16"

   // Set the flag directly from QML
   flags: Qt.FramelessWindowHint
}