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

时间:2016-01-31 00:55:02

标签: 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"
}

我正在使用以下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->setFlags(Qt::Widget|Qt::FramelessWindowHint);

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

如何在没有这些意外副作用的情况下设置此无框架属性?

1 个答案:

答案 0 :(得分:3)

我不确定为什么窗户会为你显示黑色。也许是因为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
}