2014-06-21 86 views
3

我遇到一個奇怪的問題:當QML Window是全屏時,其opacity屬性不起作用,所以窗口保持不透明狀態。當窗口不是全屏時(例如最大化),它可以正常工作。全屏時QML窗口不透明

你有什麼想法如何處理這個問題? 事實上,我想動畫全屏窗口衰落

代碼:

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。

回答

3

這是Qt/Win組合中的一個古老的bug - 帶有OpenGL上下文的窗口,如果不採用欺騙手段,就不能變得透明。解決方案是將您的QML應用程序嵌入到QQuickWidget中,並使該透明和全屏。還有另一種解決方法(使用'DWM'API,這是不可移植的 - 你可以在錯誤描述中閱讀它)。

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