首页| 论坛| 消息

标题:QtGraphs
作者:20091001753
日期:2024-09-24 07:52
内容:

原文发布于2024年9月24日
https://www.qt.io/blog/qtgraphs
QtGraphs 模块将 2D 和 3D 数据可视化集成到一个包中,有效地取代了 Qt 5 早期推出的旧版 QtCharts 和 QtDataVisualization 模块。通过组合这些模块,用户可以更直观、更方便地找到适合其所有数据可视化需求的模块。
渲染方面的改进
当创建 3D 数据可视化模块时,Qt 还没有如今的复杂图形抽象和 3D 渲染引擎。因此,专门为 QtDataVisualization 创建了一个定制的 OpenGL 渲染引擎。渲染引擎需要与使用 OpenGL ES 2 的设备配合使用,因此缺乏现代 OpenGL 功能,例如实例渲染。此外,由于渲染引擎使用 OpenGL,因此 Ui 组件也需要使用 OpenGL。强制应用程序使用 OpenGL 会导致在具有更好图形替代方案的平台上性能不佳,例如 Windows 上的 Direct3D。QtGraphs 的 3D 方面不仅限于 OpenGL,因为它使用 Quick3D 来可视化图形。QtCharts 与 Widget 框架高度耦合,因为它使用了图形视图框架。这通常意味着使用软件渲染解决方案。但是,由于 QtGraphs 在 Quick 框架上运行,因此 2D 图形使用硬件加速渲染。
3D 数据 API 的变更
QtDataVisualization 和 QtGraphs 之间的变更不仅仅是在幕后,因为数据 API 已经进行了重大的重新设计。旧 API 需要为新数据数组分配堆。但是现在,所有数据都可以在堆栈中分配,并且使用移动语义来避免不必要地复制数据。除了这些 API 变更之外,代理的使用现已明确。在 QtDataVisualization 中,代理包含提供给系列的数据。但是,代理不应保存数据,而应充当传递数据的中间层。在 QtGraphs 中,数据仍传递给代理,但它们会立即将其提供给系列,而不是存储它。
小部件支持
QtGraphs 仍可与 QtDataVisualization 等小部件一起使用。但是,存在一些差异。由于 Quick3D 使用快速渲染基础结构,因此应使用 QQuickWidgets 而不是普通的 QWidgets。当 QtGraphs 在 TP 中时,每个图形都继承自 QQuickWidget。但是,该设计不是最优的,因为它对小部件框架产生了硬依赖。因此,设计被更改为使用组合而不是继承。
相互作用
QtGraphs 保留了与 QtDataVisualization 相同的 3D 图形交互方法,但其实现已大大简化。以前,QtDataVisualization 使用 QAbstract3DInputHandler、QInput3DHandler 和 QTouch3DIn ..

回复 发表
主题 版块