Qt Quick平台应用程序中的OpenGL

时间:2013-10-16 19:41:45

标签: opengl qml qt5 qtquick2 qtdeclarative

我正在尝试开发跨平台(或至少是桌面+嵌入式硬件)应用程序。我想使用Qt Quick创建一个触摸友好的GUI。我已经实现了一个带有QGLWidget显示数据的经典应用程序。重要的是,只有窗口的一部分在OpenGL中。因此,EGLFS和LinuxFB存在问题。只有X11(或Wayland)可以正确显示应用程序(其他人会产生一些关于缺少setParent函数的错误,整个屏幕都是黑色的)。现在我试图在QML中实现同样的目标。我想将这个OpenGL渲染器用作我的QML应用程序的一部分,并使用一些Qt Quick小部件。我发现有几个人问同样的事情,答案总是要继承QDeclarativeItem并调用画家的beginNativePainting()(其他人说通过QDeclarativeItem导出它,但我无法弄清楚如何做到这一点)。问题是在桌面上,Qt 5.11本土画家不是OpenGL。在QT5中,没有办法强制使用OpenGL图形系统。因此,当我尝试获取OpenGL上下文(QGLContext :: currentContext())时,我总是得到NULL。另一个问题:如果我用qmlRegisterType导出我的小部件(“Test”,1,0,“Test”);它只在我使用QDeclarativeView时才可见,但它不会看到Qt Quick。如果我使用QQuickView,则表示未安装模块“Test”。我该如何正确实现?

1 个答案:

答案 0 :(得分:0)

QDeclarativeItem来自Qt Quick 1和Qt4。使用Qt 5和Qt Quick 2,你应该使用QQuickItem。 qt docs提供了至少一个这样的示例,您可以在示例部分的Welcome选项卡中的Qt Creator中找到它。