qt3d窗口内的Qt小部件

Posted

技术标签:

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

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

【问题讨论】:

你看过planets example。它不是直接的QWidgets,但可以让你开始。 【参考方案1】:

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

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

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

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

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

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

【讨论】:

【参考方案2】:

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

QExtrudedTextGeometry 似乎是 3D 文本的类

【讨论】:

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

以上是关于qt3d窗口内的Qt小部件的主要内容,如果未能解决你的问题,请参考以下文章

如何在标准GUI应用程序中使用Qt3D进行渲染?

qt - 在父窗口/小部件类中初始化子小部件的目的是啥?

Qt - 在 translate() 之后获取小部件内矩形的位置

Qt 删除窗口小部件

QT:如何关闭同一个小部件的多个窗口?

其他非 qt 窗口顶部的 Qt 小部件