全屏时 QML 窗口不透明度不起作用

Iva*_*lov 4 qt qml qt-quick

我遇到了一个奇怪的问题:当 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。

use*_*108 5

这是 Qt/Win 组合的古老错误 - 具有 OpenGL 上下文的窗口如果不使用欺骗手段就无法变得透明。解决方案是将您的 QML 应用程序嵌入到 a 中QQuickWidget,并使其透明且全屏。还有另一种解决方法(使用“DWM”API,它是不可移植的 - 您可以在错误描述中阅读它)。

https://bugreports.qt.io/browse/QTBUG-28214