Qt QWindow的QWidgetAttribute

Qt QWindow的QWidgetAttribute,qt,Qt,有人知道如何将Qt::WidgetAttribute转换为Qt::WindowFlags吗??? 我所说的转换是指有没有像WA_NoBackground或WA_半透明背景这样的WidgetAttribute作为WindowFlags的标志 我一直试图在QML中透明我的ApplicationWindow项,但我做不到 Main.Qml import QtQuick 2.1 import QtQuick.Controls 1.0 import QtQuick.Window 2.0 Applicat

有人知道如何将Qt::WidgetAttribute转换为Qt::WindowFlags吗??? 我所说的转换是指有没有像WA_NoBackground或WA_半透明背景这样的WidgetAttribute作为WindowFlags的标志

我一直试图在QML中透明我的ApplicationWindow项,但我做不到

Main.Qml

import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Window 2.0

ApplicationWindow {
     title: qsTr("Hello World")
     width: 640
     height: 480
     flags: Qt.SubWindow | Qt.Tool | Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint
     opacity: 0.5
     Image {
           anchors.fill: parent
           source: "blah.png" // and this picture in transparent
     }
}
我正在寻找像WA_NoBackground和WA_半透明背景一样的旗帜

Main.cpp

int main(int argc, char *argv[])
{
     Application app(argc, argv);

     QQmlApplicationEngine engine;
     engine.load(QUrl("blah.qml"));

     QObject *topLevel = engine.rootObjects().value(0);
     QQuickWindow *window = qobject_cast<QQuickWindow *>(topLevel);

     window->show();
     window->setColor(Qt::transparent);

     return app.exec();
}
intmain(intargc,char*argv[])
{
应用程序应用程序(argc、argv);
qqmlaplicationengine;
发动机负荷(QUrl(“blah.qml”);
QObject*topLevel=engine.rootObjects().value(0);
QQuickWindow*window=qobject_cast(顶级);
窗口->显示();
窗口->设置颜色(Qt::透明);
返回app.exec();
}

这是因为Windows中的透明度支持被破坏了。您可以查看我的
QuickWidget
示例,并将其修复为在Windows下工作。否则,这就是一个著名的Qt错误。