0

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

4

1 回答 1

0

QDeclarativeItem 来自 Qt Quick 1 和 Qt4。对于 Qt 5 和 Qt Quick 2,您应该使用 QQuickItem。qt 文档中至少提供了 1 个示例,您可以在示例部分的欢迎选项卡中的 Qt Creator 中找到该示例。

于 2013-10-17T03:45:57.480 回答