在Qt5.3中基于OpenGL渲染的QML UI

时间:2014-09-12 19:01:02

标签: opengl qml

我试图在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布局背景透明化? 我错过了什么?

0 个答案:

没有答案