我正在尝试创建一个简单的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);
窗口现在总是显示为黑色!
如何在没有这些意外副作用的情况下设置此无框架属性?
答案 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
}