【问题标题】:Qt Widget inside qt3d windowqt3d窗口内的Qt小部件
【发布时间】:2018-12-22 21:35:52
【问题描述】:

如何将标签或按钮放入 qt3d 窗口?是否可以?还没有看到任何示例...我试图简单地将 qt3d 放在 windowcontainer 中,为其分配布局和 layout->addWiget() 但它不起作用。

【问题讨论】:

  • 你看过planets example。它不是直接的QWidgets,但可以让你开始。

标签: c++ qt qt3d


【解决方案1】:

我知道这是一个非常古老的问题,但如果其他人偶然发现这个问题,我想给出更详细的答案。

  1. 我实现了一个 Qt3D 小部件,您可以找到 here。不幸的是,它依赖于一种从 QAbstractTexture 获取纹理 id 的方法,该方法仅适用于 Qt >= 5.13,因此这是您必须使用的最低版本。

  2. createWindowContainer 将相应的窗口绘制在其他所有窗口之上。因此,您将永远无法在容器内绘制任何按钮。

  3. 您当然可以在您的容器化 3D 窗口周围拥有按钮和其他所有东西。但这并不是你想要的。

  4. 您可以使用Dear ImGui - 它是Qt3D integration。 ImGui 用于在 3D 环境中使用顶点绘制 GUI 元素。

  5. 当然,您始终可以使用 QML - 您应该可以在 3D 视图中放置按钮。

【讨论】:

    【解决方案2】:

    您在 QT3d 文档中的第一个 C++ 示例中同时拥有标签和(单选)按钮,请参阅 Qt 3D: Basic Shapes C++ Example

    QExtrudedTextGeometry 似乎是 3D 文本的类

    【讨论】:

    • 我想在 3d 视图中添加标签,而不是在外部。
    • @KamilSłotwiński 看看 QExtrudedTextGeometry,似乎是 3D 文本类