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

时间:2014-06-21 09:56:18

标签: qt qml qt-quick

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

1 个答案:

答案 0 :(得分:4)

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

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