在Windows 7经典主题的快速透明窗口

时间:2017-07-18 04:04:36

标签: qt-quick

我创建了一个透明的qml窗口,一切正常,直到我将我的windows 7主题更改为经典,我希望它透明的区域是黑色。

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQuick>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
//    QQuickWindow::setDefaultAlphaBuffer(true);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

和我的Qml读取

import QtQuick 2.6
import QtQuick.Window 2.2
import QtGraphicalEffects 1.0

Window {
    id: window
    visible: true
    width: 640
    height: 480
    color: "#00000000"
    flags: Qt.Window | Qt.FramelessWindowHint//去掉标题栏

    RectangularGlow {
      anchors.fill: background
      glowRadius: 10
      spread: 0
      cornerRadius: 10
      color: "#99999999"
   }

    Rectangle{
        id: background
        anchors.topMargin: 50
        anchors.centerIn: parent
        radius: 15
        width: parent.width *2/3
        height: parent.height - 10
        color: "#ffdbeef5"
    }

}

任何人都有一些想法?

Here is a screenshot

1 个答案:

答案 0 :(得分:0)

QtQuick透明窗口不适用于Win7经典主题。透明窗口仅适用于启用Aero的情况。可能有一些工作或非QT方式这样做。关于这个bug有很多讨论,并且已经报告了(https://bugreports.qt.io/browse/QTBUG-60130https://bugreports.qt.io/browse/QTBUG-52494https://bugreports.qt.io/browse/QTBUG-28214