如何更改 QtQuick 窗口的背景颜色?

Luc*_*uca 3 c++ qt qml qtquick2

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

import QtQuick 2.2
import QtQuick.Window 2.1

Window {
   id: root
   objectName: "window"
   visible: true
   width: 800
   height: 480
   color: "#16FF16"
}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下 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();
Run Code Online (Sandbox Code Playgroud)

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

window->setFlags(Qt::Widget|Qt::FramelessWindowHint);
Run Code Online (Sandbox Code Playgroud)

窗口现在总是显示为黑色!

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

iBe*_*eve 5

我不知道为什么窗口显示为黑色。也许是因为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
}
Run Code Online (Sandbox Code Playgroud)