gpt4 book ai didi

Qt 小部件与顶部的 QML 混合

转载 作者:行者123 更新时间:2023-12-04 13:11:01 28 4
gpt4 key购买 nike

我想使用两个小部件(一次一个)作为我的应用程序的基础/背景,上面有一个 QML UI 和一个无边框窗口。它应该看起来像这样:

layout

  1. 基于 OpenGL 的扫描组件
  2. 通过窗口句柄操作的 3D 可视化组件
  3. 多个 QML UI 组件作为叠加层(可能是可拖动的)
  4. QML 侧边栏组件

我已经成功地将组件 1 包含到 QGLWidget 中,并在其顶部显示了 QML 组件。工作没有问题。

但是,我无法使组件 2 工作。如果我将它包含在顶级 QWidget 中并使用它的 winId 访问句柄,我可以很容易地做到这一点。不幸的是,我不能在此基础上构建。我经历了几个选项,但似乎没有一个是足够的:

  • 如果我采用 QWidget 方式,组件位于顶部,QML 组件无法覆盖。
  • 我试图让它与 QGraphicsProxyWidget 一起工作,但它只显示一个空的灰色小部件。
  • 我读到新的(呃)方法是使用基于 QWidget 的应用程序并使用 QtQuick2 进行叠加。但同样,它似乎只适用于基于 OpenGL 的组件。
  • 也许还有使用 QQuickWidget 和 QOpenGLWidget 的选项,在 Qt 5.3 和 5.4 中可用,但我不知道它如何工作以及是否工作,因为我没有看到适合我目的的示例。
  • 还有 QWidget::createWindowContainer 选项,但它不允许(透明)覆盖。

我的问题是我不知道如何用 QML 覆盖非 GL 小部件,然后不知道如何将所有内容包含到一个应用程序中(当在两者之间切换时 setViewport 可能有父级问题小部件)。有没有人这样做过或可以指出可能显示结果的方向?

我正在使用 Qt 5.2.1、VS2012 和 build for x64(要求),目标是 Windows 桌面。

当然最好有一个高性能的解决方案,也许是基于 QtQuick2,但我很茫然,我会接受任何至少能​​让它暂时工作的东西。

最佳答案

最后,我继续使用 QWindow,使用它的窗口句柄来集成 3D 可视化,然后用 QQuickView 组件(以 QWindow 作为父级)覆盖它。该解决方案的唯一缺点是它不允许透明度。

关于Qt 小部件与顶部的 QML 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27440157/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com