Qt 半透明QQuickWidget不';不要在窗户上画任何东西

Qt 半透明QQuickWidget不';不要在窗户上画任何东西,qt,qml,Qt,Qml,我想创建一个没有父项的QQuickWidget,即窗口。我阅读了关于该文档的内容(关于QQuickWidget): 使用其他应用程序和 桌面在后台可见,是以传统方式完成的:设置 Qt::WA_半透明背景并更改Qt Quick Scenegraph的 通过setClearColor()清除Qt::transparent的颜色 以下是我编写的代码,它在Qt5.5.0+Mint17.0上运行良好,并带有运行时警告——“QQuickWidget:尝试在没有上下文的情况下渲染场景”。在Windows10+

我想创建一个没有父项的
QQuickWidget
,即窗口。我阅读了关于该文档的内容(关于
QQuickWidget
):

使用其他应用程序和 桌面在后台可见,是以传统方式完成的:设置 Qt::WA_半透明背景并更改Qt Quick Scenegraph的 通过setClearColor()清除Qt::transparent的颜色

以下是我编写的代码,它在Qt5.5.0+Mint17.0上运行良好,并带有运行时警告——“QQuickWidget:尝试在没有上下文的情况下渲染场景”。在Windows10+Qt 5.4.2上运行时,它是完全透明的

//main.cpp
#include <QApplication>
#include <QQuickWidget>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    auto quick = new QQuickWidget();
    quick->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
    quick->setAttribute(Qt::WA_TranslucentBackground, true);
    quick->setClearColor(Qt::transparent);
    quick->setSource(QUrl("qrc:/main.qml"));
    quick->show();

    return a.exec();
}
//main.qml
import QtQuick 2.4

Rectangle {
    height: 360
    width: 360
    color: "transparent"
    Text{
        text: "hello"
    }
}
//main.cpp
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
自动快速=新的QQuickWidget();
quick->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
快速->设置属性(Qt::WA_半透明背景,true);
quick->setClearColor(Qt::透明);
快速->设置源(QUrl(“qrc:/main.qml”);
快速->显示();
返回a.exec();
}
//main.qml
导入QtQuick 2.4
长方形{
身高:360
宽度:360
颜色:“透明”
正文{
文字:“你好”
}
}

view->setWindowOpacity(0.5)怎么样?在这种情况下使用
QQuickWidget
有什么意义?我认为使用
QML
创建窗口的更好方法是通过
QQuickView
qqqmlapplicationengine::load()
设置不透明度不起作用。我有一个C++小部件和一个QML小部件,我需要QML控件来一直保持在顶部。code>QQuickview似乎不支持
raise()
@你能邮寄吗?我已经测试过了,不透明度对我来说很好,所以它需要一些额外的代码来测试。升级到Qt5.5.0后,一切都正常。然后我用Qt5.4.2构建了它,它变得可见,有点像wierd。