当前位置: 首页 > wzjs >正文

网站建设哪家好推荐万维科技网站建设风险评估

网站建设哪家好推荐万维科技,网站建设风险评估,正规官方代运营电商公司,成都房地产市场Qt Data Visualization 是一个开源的第三方库,它为Qt框架提供了高级的数据可视化功能。这个库允许开发者创建复杂的3D和2D图表,包括但不限于散点图、曲面图、条形图等。它基于Qt 3D模块,因此可以充分利用Qt 3D引擎的强大功能来呈现三维数据。…

Qt Data Visualization 是一个开源的第三方库,它为Qt框架提供了高级的数据可视化功能。这个库允许开发者创建复杂的3D和2D图表,包括但不限于散点图、曲面图、条形图等。它基于Qt 3D模块,因此可以充分利用Qt 3D引擎的强大功能来呈现三维数据。

一、安装

要在你的Qt项目中包含Qt Data Visualization,你首先需要确保你的Qt安装中包含了Qt Data Visualization模块。你可以通过Qt的维护工具(如Qt Maintenance Tool)来安装或更新模块。

安装步骤:
  1. 打开Qt Maintenance Tool

    • 如果你使用的是Windows,通常在安装目录下的maintenance文件夹中。

    • 在Mac上,通常在/Applications/Qt/目录下。

    • 在Linux上,通常在/opt/qtcreator/或你的家目录下的某个Qt文件夹中。

  2. 选择“Add or Remove Components”

    • 在维护工具中,选择“Add or Remove Components”选项。

  3. 安装Qt Data Visualization

    • 在组件列表中,找到“Qt Data Visualization”模块,并勾选它。

    • 根据提示完成安装过程。

二、配置

  1. 模块引入
    在 .pro 文件中添加模块依赖:
    QT += datavisualization
  2. 头文件包含
    C++ 中需包含头文件:
    #include <QtDataVisualization>
    using namespace QtDataVisualization;

三、核心类与创建流程

  1. 选择图表类型

    • Q3DBars‌:三维柱状图,适用于多组数据对比‌14
    • Q3DScatter‌:三维散点图,适合点云或分布数据展示‌23
    • Q3DSurface‌:三维曲面图,用于显示连续数据或地形‌23
  2. 创建图表对象

    Q3DBars bars;  // 柱状图
    Q3DSurface surface; // 曲面图
  3. 设置容器窗口
    不能简单使用QWidget组件作为Q3DBars组件的容器,也就是不能在主窗口上放置一个QWidget组件,然后作为Q3DBars组件的容器,需通过 QWidget::createWindowContainer 将图表嵌入容器:

    QWidget *container = QWidget::createWindowContainer(&bars);
  4. 调整窗口标志
    去除默认的无边框窗口标志以正确显示:

    bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);

四、数据与系列配置

数据序列(Series)

  • 柱状图‌:使用 QBar3DSeries,通过 dataProxy()->addRow() 添加数据‌
    QBar3DSeries *series = new QBar3DSeries;
    QBarDataRow *dataRow = new QBarDataRow;
    *dataRow << 1.0f << 3.0f << 7.5f;
    series->dataProxy()->addRow(dataRow);
    bars.addSeries(series);
  • 曲面图‌:使用 QSurface3DSeries,通过 resetArray() 加载数据‌
    QSurfaceDataArray *data = new QSurfaceDataArray;
    QSurfaceDataRow *row1 = new QSurfaceDataRow;
    *row1 << QVector3D(0, 0.1, 0.5) << QVector3D(1, 0.5, 0.5);
    data->append(row1);
    QSurface3DSeries *series = new QSurface3DSeries;
    series->dataProxy()->resetArray(data);
    surface.addSeries(series);

坐标轴设置

bars.rowAxis()->setRange(0, 4);    // 行轴范围
bars.columnAxis()->setRange(0, 4); // 列轴范围
bars.valueAxis()->setLabelFormat("%.2f"); // 数值轴格式

五、示例代码

1、代码(以曲面图为例)

#include <QApplication>
#include <QtDataVisualization>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建 Q3DSurface 对象QtDataVisualization::Q3DSurface surface;surface.setFlags(surface.flags() ^ Qt::FramelessWindowHint);  // 移除窗口边框 ‌surface.setWidth(800);surface.setHeight(600);// 创建数据代理和序列QtDataVisualization::QSurfaceDataProxy *proxy = new QtDataVisualization::QSurfaceDataProxy();QtDataVisualization::QSurface3DSeries *series = new QtDataVisualization::QSurface3DSeries(proxy);// 配置序列绘制模式series->setDrawMode(QtDataVisualization::QSurface3DSeries::DrawSurface);  // 绘制曲面 series->setFlatShadingEnabled(true);  // 启用平滑着色// 填充数据(示例:2x2 矩阵)QtDataVisualization::QSurfaceDataArray *data = new QtDataVisualization::QSurfaceDataArray;QtDataVisualization::QSurfaceDataRow *row1 = new QtDataVisualization::QSurfaceDataRow;QtDataVisualization::QSurfaceDataRow *row2 = new QtDataVisualization::QSurfaceDataRow;*row1 << QVector3D(0, 0, 1) << QVector3D(1, 0, 2);*row2 << QVector3D(0, 1, 3) << QVector3D(1, 1, 4);data->append(row1);data->append(row2);// 将数据绑定到代理proxy->resetArray(data); // 将序列添加到曲面对象surface.addSeries(series);surface.show();return app.exec();
}

2、代码(3D散点图)

#include <QtDataVisualization>
#include <QApplication>
#include <QSurface3DSeries>
#include <Q3DBars>
#include <QScatter3DSeries>
#include <QScatterDataItem>
#include <QScatterDataProxy>
#include <QRandomGenerator>using namespace QtDataVisualization;int main(int argc, char **argv) {QApplication app(argc, argv);Q3DBars *graph = new Q3DBars();graph->activeTheme()->setType(Q3DTheme::Theme(Q3DTheme::ThemeUberDark));graph->activeTheme()->setBackgroundEnabled(false);graph->activeTheme()->setGridEnabled(false);graph->activeTheme()->setLabelBackgroundEnabled(false);graph->activeTheme()->setLabelBorderEnabled(false);graph->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);graph->scene()->activeCamera()->setCameraPreset(Q3DCamera::CameraPresetFront);graph->axisX()->setTitle("X Axis");graph->axisY()->setTitle("Y Axis");graph->axisZ()->setTitle("Z Axis");graph->show();return app.exec();
}

五、第三方扩展组件

QtDataVisualization三维图表适合轻量级数据(如千级数据点),复杂场景建议使用 VTK 等专业库‌。
VTK(Visualization Toolkit)是一个开源的、跨平台的三维可视化开发库,用于处理和可视化三维数据。

1、编译

从网址:Download | VTK下载源码编译。

  • 下载 VTK 8.2.0 源码(Windows 选 .zip 格式),解压至本地路径‌
  • 使用 CMake 生成 VS 项目:
    • 设置 BUILD_SHARED_LIBS=ON(动态编译)
    • 勾选 VTK_GROUP_Qt 以支持 Qt 集成‌
    • 指定 CMAKE_INSTALL_PREFIX 为安装路径(如 D:/VTK
  • 使用 Visual Studio 编译 ALL_BUILD 和 INSTALL 生成库文件‌

2、QT配置

在 .pro 文件中添加 VTK 路径:

INCLUDEPATH += D:/VTK/include/vtk-8.2
LIBS += -LD:/VTK/lib -lvtkCommonCore-8.2 -lvtkRenderingOpenGL2-8.2  # 根据需求添加其他库

将 QVTKOpenGLNativeWidget 控件类提升到 Qt UI 界面中‌,在 Qt Designer 中添加 QWidget,右键选择「提升为」并填写类名 QVTKOpenGLNativeWidget

3、核心开发步骤

‌1)初始化 VTK 窗口

#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>QVTKOpenGLNativeWidget *vtkWidget = new QVTKOpenGLNativeWidget(this);
vtkNew<vtkRenderer> renderer;
vtkWidget->renderWindow()->AddRenderer(renderer);// 创建球体并显示
vtkNew<vtkSphereSource> sphere;
vtkNew<vtkPolyDataMapper> mapper;
mapper->SetInputConnection(sphere->GetOutputPort());
vtkNew<vtkActor> actor;
actor->SetMapper(mapper);
renderer->AddActor(actor);

2)‌加载 STL 模型

#include <vtkSTLReader.h>
vtkNew<vtkSTLReader> reader;
reader->SetFileName("model.stl");
reader->Update();
mapper->SetInputConnection(reader->GetOutputPort());  // 替换上述球体代码

具体编译与使用步骤参考:VTK 8.2.0编译与配置 - 懒蚂蚁呀不嘿 - 博客园


文章转载自:

http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://00000000.hbnwr.cn
http://www.dtcms.com/wzjs/619586.html

相关文章:

  • 外贸soho建站公司网站开发的目的
  • 电子网站建设考试网络营销师资格证
  • 网站建设教程视频西瓜全国信用网站一体化建设
  • 做网站的竞品分析营销网站建设是什么意思
  • 可以带锚文本的网站哪有做企业网站
  • 做cpa的网站源码php网站开发工程师面试
  • 海珠建网站多少钱福州优秀网站建设公司
  • 如何把网站做的更好杭州蒙特网站建设
  • 中山有做网站的公司吗权威发布高清图片
  • 抚顺营销型网站建设专业的网站建设排名
  • 获得网站管理员密码几度设计网站
  • 网站最好的优化是什么163网易企业邮箱入口
  • 中山精品网站建设机构网站建设成本报表
  • 网站建设翻译英文做熊猫tv网站的目的
  • 浙江省网站建设微信公众号推广网站
  • 有哪些公司的网站设计的好政务网站模版
  • 从零开始学手机网站开发教程网站建设合同书模板
  • 做APP必须要有网站么做像淘宝这样的购物网站要多少钱
  • 学校建设网站重要性厦门手机网站建设是什么
  • 一个人做网站可以做什么网站设计与制作教程1
  • 网站建设合同西安市十大it培训机构
  • 网站开发设计费 怎么入账用vs2010做网站的好处
  • 有没有做家居服设计师看的网站胖子马wordpress模板:q8免费版
  • 城市建设者官方网站seo技术优化
  • 加强网站的建设与管理淄博外贸网站哪家好
  • 江苏连云港网站建设公司手机做wifi中继上外国网站
  • 杭州网站排名优化公司幸福人寿保险公司官方网站电子保单打印
  • 网站底部加编码网站开发技术服务协议
  • 网站开发需要掌握技术有无广告销售版本"有广告免费无广告收费"网站
  • 影视网站视频接口怎么做网站工程师是做什么的