我遇到了一个奇怪的问题:当QML Window
是全屏时,其opacity
属性不起作用,因此窗口保持不透明。当窗口不是全屏(例如最大化)时,它可以正常工作。
您对如何处理此问题有任何想法吗? 事实上,我希望动画全屏窗口淡入。
代码:
main.qml
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.1
Window {
visible: true
visibility: "FullScreen"
opacity: 0.5
Text {
id: text
text: "Hello World"
font.pointSize: 36
color: "#333"
}
}
的main.cpp
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return app.exec();
}
我在Windows 8.1上使用Qt 5.3。
答案 0 :(得分:4)
这是Qt / Win组合的古老错误 - 具有OpenGL上下文的窗口,无需使用欺骗就可以变得透明。解决方案是将您的QML应用程序嵌入QQuickWidget
并使其透明且全屏。还有另一种解决方法(使用&#39; DWM&#39; API,这是不可移植的 - 您可以在错误描述中阅读它。)