基于Qt 6.5 QML Window 透明实现2种方案,这是在项目开发中遇到的问题,现简单记录,供遇到类似问题的同学参考,如有纰漏恳请赐教指导!
1、基于OPGL 实现,这个方案是查看项目代码中Qt专家实现的,属于借花献佛:
在main.cpp 中开启OpenGL:QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL)
QML 中Window color 设置透明度如 color: "transparent" 或开启alpha通道如color:"#40FF0000":
// main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);
QObject::connect(
&engine,
&QQmlApplicationEngine::objectCreationFailed,
&app,
[]() { QCoreApplication::exit(-1); },
Qt::QueuedConnection);
engine.loadFromModule("sharderwithlayereffect", "Main");
return app.exec();
}