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)
窗口现在总是显示为黑色!
如何设置这个无框架属性而不产生这些意外的副作用?
我不知道为什么窗口显示为黑色。也许是因为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)
| 归档时间: |
|
| 查看次数: |
7559 次 |
| 最近记录: |