我试图在Qt5.3上的openGL渲染之上渲染QML UI,到目前为止,QML小部件有黑色背景,而我希望有一个透明的。
我在单个文件中展开了我的代码,因此更容易阅读和编译:
#include <QtWidgets/QApplication>
#include <QGLWidget>
#include "QDeclarativeView"
class MyGLWidget : public QGLWidget
{
public:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
};
void MyGLWidget::initializeGL()
{
qglClearColor(QColor::fromRgb(128, 0, 0));
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
glEnable(GL_MULTISAMPLE);
}
void MyGLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget* l_window = new QWidget;
MyGLWidget* l_3dviewport = new MyGLWidget;
l_3dviewport->initializeGL();
QDeclarativeView* l_qmlView = new QDeclarativeView(l_3dviewport);
l_qmlView->setStyleSheet(QString("background: transparent"));
l_qmlView->viewport()->setAutoFillBackground(false);
l_qmlView->setSource(QUrl::fromLocalFile("C:/Rudy/dev/projects/Z3DApplication/Z3DApplication/UI/helloWorld/helloWorld.qml"));
l_qmlView->show();
QVBoxLayout *l_layout = new QVBoxLayout(l_3dviewport);
l_layout->addWidget(l_qmlView);
QHBoxLayout* l_mainLayout = new QHBoxLayout;
l_mainLayout->addWidget(l_3dviewport);
l_window->setLayout(l_mainLayout);
l_window->resize(QSize(800, 600));
l_window->show();
return app.exec();
}
这是我的qml文件
import QtQuick 1.1
Rectangle
{
Rectangle
{
id: page
width: 500; height: 200
color: "blue"
Text
{
id: helloText
text: "Hello world!"
y: 30
anchors.fill: parent
font.pointSize: 24; font.bold: true
}
}
}
我希望看到一个暗红色的屏幕(openGL视图)和中间的蓝色QML广场,以及#34; Hello World&#34;书面。 但这是我得到的: https://owncloud.fersing.eu/public.php?service=files&t=367514faebdc2adbea8092f50cc81d01 我们有深红色和QML的openGL内容,但QML布局是黑色的 有谁知道如何让我的QML布局背景透明化? 我错过了什么?