我遇到了一个奇怪的问题:当 QMLWindow全屏时,它的opacity属性不起作用,因此窗口保持不透明。当窗口不是全屏时(例如最大化),它可以正常工作。
您对如何处理这个问题有什么想法吗?事实上,我想制作全屏窗口淡入的动画。
代码:
主.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"
}
}
Run Code Online (Sandbox Code Playgroud)
主程序
#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();
}
Run Code Online (Sandbox Code Playgroud)
我在 Windows 8.1 上使用 Qt 5.3。
这是 Qt/Win 组合的古老错误 - 具有 OpenGL 上下文的窗口如果不使用欺骗手段就无法变得透明。解决方案是将您的 QML 应用程序嵌入到 a 中QQuickWidget,并使其透明且全屏。还有另一种解决方法(使用“DWM”API,它是不可移植的 - 您可以在错误描述中阅读它)。
https://bugreports.qt.io/browse/QTBUG-28214