【QT学习十三】QChart

目录

一、概述        

二、头文件及配置

       实例演示

三、基本功能

1. 图表组件管理

2. 系列和数据处理

3. 坐标轴管理

4. 图表绘制和显示

5. 主题和样式:

四、`QChart` 类中的一些方法

1. addSeries(QAbstractSeries *series)

2. removeSeries(QAbstractSeries *series)

3. setTitle(const QString &title)

4. legend()

5. createDefaultAxes()

6. addAxis(QAbstractAxis *axis, Qt::Alignment alignment)

7. removeAxis(QAbstractAxis *axis)

8. axes(Qt::Orientation orientation)

9. setBackgroundBrush(const QBrush &brush)

10. setPlotAreaBackgroundBrush(const QBrush &brush)

11. setPlotAreaBackgroundVisible(bool visible)

12. zoomIn(const QRectF &rect)

13. zoomOut(const QRectF &rect)

14. setAnimationOptions(QChart::AnimationOptions options)

五、主题(Chart themes)


一、概述        

        QChart 是 Qt Charts 模块中的主要类之一,用于管理图表的系列、图例和坐标轴的图形表示。QChart 类提供了强大的图表绘制功能,能够轻松创建和展示各种类型的图表,包括折线图、柱状图、饼图等。

二、头文件及配置

        要在项目中使用QChart类,必须加入Qt Charts模块,可以在项目文件(.pro文件)中增加下面的语句:

Qt     +=  charts

或者在CMakelists.txt中增加以下语句:

find_package(Qt5 COMPONENTS Charts REQUIRED)target_link_libraries(projectname PRIVATE Qt5::Charts)

在使用QtChart类的头文件中,要使用以下包含语句:

#include <QtCharts>using namespace QtCharts;

也可以使用宏

#include <QtCharts>Qt_CHARTS_USE_NAMESPACE

       实例演示

让我们通过一个简单的实例来演示如何使用 QChart 创建一个折线图,并添加一些基本的定制化。

#include <QtWidgets/QApplication>
#include <QtCharts>QT_CHARTS_USE_NAMESPACEint main(int argc, char *argv[])
{QApplication a(argc, argv);// 创建折线图系列QLineSeries *series = new QLineSeries();series->append(0, 6);series->append(2, 4);series->append(3, 8);series->append(7, 4);series->append(10, 5);// 创建图表并将系列添加到图表中QChart *chart = new QChart();chart->addSeries(series);chart->setTitle("简单折线图");// 创建坐标轴QValueAxis *axisX = new QValueAxis;axisX->setTitleText("X轴");chart->addAxis(axisX, Qt::AlignBottom);series->attachAxis(axisX);QValueAxis *axisY = new QValueAxis;axisY->setTitleText("Y轴");chart->addAxis(axisY, Qt::AlignLeft);series->attachAxis(axisY);// 创建图表视图并显示QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing);chartView->show();return a.exec();
}

效果

        在这个例子中,我们创建了一个简单的折线图系列,设置了几个数据点,并添加到了图表中。通过创建坐标轴并将系列附加到坐标轴上,我们完成了基本的图表构建。这只是一个入门级的例子,你可以根据需要进一步定制图表的外观和交互性。

三、基本功能

1. 图表组件管理

         `QChart` 负责管理图表的各个组件,包括图表系列(如折线、柱状等)、图例、坐标轴等。这些组件协同工作以绘制完整的图表。

2. 系列和数据处理

        图表通过系列(`QAbstractSeries` 的派生类,如 `QLineSeries`、`QBarSeries` 等)来展示数据。开发者通过创建并配置系列对象,将数据添加到系列中,然后将系列添加到图表中。

    QLineSeries *series = new QLineSeries();// 添加数据到系列series->append(1, 2);series->append(3, 4);// 将系列添加到图表chart->addSeries(series);

3. 坐标轴管理

        `QChart` 通过 `QAbstractAxis` 的派生类来管理坐标轴。默认情况下,图表会创建默认的坐标轴,但开发者可以创建自定义的坐标轴,并将它们添加到图表中。坐标轴的设置包括范围、刻度、标签等。

    // 创建并添加默认坐标轴chart->createDefaultAxes();// 设置坐标轴范围chart->axes(Qt::Horizontal).first()->setRange(0, 10);chart->axes(Qt::Vertical).first()->setRange(0, 5);

4. 图表绘制和显示

        `QChart` 利用 Qt 的绘图框架进行图表的绘制。在图表中添加了系列和坐标轴后,通过 `QChartView` 将图表显示在界面上。开发者可以设置图表的样式、主题、动画效果等来美化图表的显示。

    QChartView *chartView = new QChartView(chart);chartView->setRenderHint(QPainter::Antialiasing, true); // 抗锯齿效果

5. 主题和样式:

        'QChart` 支持主题(`QChart::ChartTheme`)的设置,通过选择不同的主题,可以一次性调整图表中各个元素的颜色、样式等。同时,开发者也可以直接设置图表、系列等的样式,实现更加个性化的定制。

    QChart::ChartTheme theme = QChart::ChartThemeLight;chart->setTheme(theme);

        通过配置图表的组件、添加数据、管理坐标轴,开发者可以实现丰富多彩的图表展示,并通过设置样式、主题和动画效果来提升用户体验。

四、`QChart` 类中的一些方法

1. addSeries(QAbstractSeries *series)

   - 用于向图表中添加一个图表系列,例如折线图、柱状图等。参数 `series` 是一个指向 `QAbstractSeries` 类的指针。

2. removeSeries(QAbstractSeries *series)

   - 从图表中移除指定的图表系列。

3. setTitle(const QString &title)

   - 设置图表的标题。

4. legend()

   - 返回图表的图例对象,可以通过该对象进行图例的定制和管理。

5. createDefaultAxes()

   - 创建默认的坐标轴。该方法会创建默认的 X 轴和 Y 轴,并将它们添加到图表中。

6. addAxis(QAbstractAxis *axis, Qt::Alignment alignment)

   - 向图表中添加坐标轴。`axis` 是一个指向 `QAbstractAxis` 类的指针,`alignment` 用于指定坐标轴的对齐方式。

7. removeAxis(QAbstractAxis *axis)

   - 从图表中移除指定的坐标轴。

8. axes(Qt::Orientation orientation)

   - 返回图表中指定方向(横轴或纵轴)的所有坐标轴。

9. setBackgroundBrush(const QBrush &brush)

   - 设置图表的背景刷,可以是颜色、渐变等。

10. setPlotAreaBackgroundBrush(const QBrush &brush)

    - 设置图表绘图区域的背景刷。

11. setPlotAreaBackgroundVisible(bool visible)

    - 设置图表绘图区域的背景是否可见。

12. zoomIn(const QRectF &rect)

    - 在指定的矩形区域内进行放大操作。

13. zoomOut(const QRectF &rect)

    - 在指定的矩形区域内进行缩小操作。

14. setAnimationOptions(QChart::AnimationOptions options)

    - 设置图表的动画选项,用于控制图表的动画效果。

        这些方法只是 `QChart` 类中的一部分,还有其他方法用于更高级的定制和交互。开发者可以根据项目的需求选择适当的方法进行使用。详细的信息可以参考 [Qt 官方文档](https://doc.qt.io/qt-5/qchart.html)。

五、主题(Chart themes)

        主题是应用于图表的所有可视元素的内置UI样式相关设置的集合,包括系列的颜色、画笔、刷子和字体,以及坐标轴、标题和图例。

        主题常量数值说明:

- `QChart::ChartThemeLight` (值为0):明亮主题,是默认主题。- `QChart::ChartThemeBlueCerulean` (值为1):蔚蓝色主题。- `QChart::ChartThemeDark` (值为2):深色主题。- `QChart::ChartThemeBrownSand` (值为3):沙褐色主题。- `QChart::ChartThemeBlueNcs` (值为4):自然色系统(NCS)蓝色主题。- `QChart::ChartThemeHighContrast` (值为5):高对比度主题。- `QChart::ChartThemeBlueIcy` (值为6):冰蓝主题。- `QChart::ChartThemeQt` (值为7):Qt主题。

注意:更改主题将覆盖先前应用于系列的所有自定义设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

波卡 2023 四季度报告:开发者数量位列加密生态前三,五项新技术将于今年发布

作者&#xff1a;Nicholas Garcia&#xff5c;Messari 研究分析师 编译&#xff1a;OneBlock 原文&#xff1a;https://messari.io/report/state-of-polkadot-q4-2023?utm_mediumorganic_social&utm_sourcetwitter_messari&utm_campaignstate_of_polkadot_q4_2023 …

Python Paramiko 使用交互方式获取终端输出报错

近期接到一个需求&#xff0c;要批量登录网络设备获取配置。 原计划使用 Paramiko exec即可&#xff0c;但是后来发现&#xff0c;有些设备命令也执行了&#xff0c;但是没有回显。 于是尝试使用 invoke_shell() 方式。 前期调试倒是OK&#xff0c;直到遇见一个输出内容较长的…

[VulnHub靶机渗透] dpwwn: 1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

CV | Medical-SAM-Adapter论文详解及项目实现

******************************* &#x1f469;‍⚕️ 医学影像相关直达&#x1f468;‍⚕️******************************* CV | SAM在医学影像上的模型调研【20240207更新版】-CSDN博客 CV | Segment Anything论文详解及代码实现 本文主要讲解Medical-SAM-Adapter论文及项…

ELAdmin 的 CRUD

数据表结构 弄个测试的数据表&#xff0c;不同类型的几个字段&#xff0c;表名位 mp_reply。 生成代码 ELAdmin 可以自动生成代码。 左侧目录系统工具–代码生成&#xff0c;点开以后可以看到上面创建的数据表mp_reply&#xff0c;点击配置。 进入的页面内容有两部分&#…

单片机无线发射的原理剖析

目录 一、EV1527编码格式 二、OOK&ASK的简单了解 三、433MHZ 四、单片机的地址ID 五、基于STC15W104单片机实现无线通信 无线发射主要运用到了三个知识点&#xff1a;EV1527格式&#xff1b;OOk&#xff1b;433MHZ。下面我们来分别阐述&#xff1a; EV1527是数据的编…

IAR报错:Error[Pa045]: function “halUartInit“ has no prototype

在IAR工程.c文件末尾添加一个自己的函数&#xff0c;出现了报错Error[Pa045]: function "halUartInit" has no prototype 意思是没有在开头添加函数声明&#xff0c;即void halUartInit(void); 这个问题我们在keil中不会遇到&#xff0c;这是因为IAR编译器规则的一…

Electron实战(二):将Node.js和UI能力(app/BrowserWindow/dialog)等注入html

文章目录 设置webPreferences参数安装electron/remotemain进程中初始化html中使用dialog踩坑参考文档 上一篇&#xff1a;Electron实战(一)&#xff1a;环境搭建/Hello World/打包exe 设置webPreferences参数 为了能够在html/js中访问Node.js提供fs等模块&#xff0c;需要在n…

NLP_语言模型的雏形 N-Gram 模型

文章目录 N-Gram 模型1.将给定的文本分割成连续的N个词的组合(N-Gram)2.统计每个N-Gram在文本中出现的次数&#xff0c;也就是词频3.为了得到一个词在给定上下文中出现的概率&#xff0c;我们可以利用条件概率公式计算。具体来讲&#xff0c;就是计算给定前N-1个词时&#xff0…

c++之说_13|模板 折叠表达式

折叠表达式 可以通过形参包的的实际参数&#xff08;不是类型&#xff09; 展开式子 这是这里说的几种 实际上并还有一些写法 先介绍这几种吧 #include <cstdio> template<typename T,T... n> struct integer_sequence {T val; }; template<int idx,typenam…

[NOI2014] 起床困难综合症

[NOI2014] 起床困难综合症 题目描述 21 21 21 世纪&#xff0c;许多人得了一种奇怪的病&#xff1a;起床困难综合症&#xff0c;其临床表现为&#xff1a;起床难&#xff0c;起床后精神不佳。作为一名青春阳光好少年&#xff0c;atm 一直坚持与起床困难综合症作斗争。通过研究…

windows上卸载完程序后,清理残余文件,无法删除的情况处理

现象&#xff1a;通常在卸载完软件后&#xff0c;要删除残余文件或者移动残余文件时候&#xff0c;会弹出来 原因&#xff1a; 因为文件被其他程序已经加载&#xff0c;处理的目标是找到使用这个文件的进程&#xff0c;然后kill掉。类似于linux上的lsof命令查找到进程号&…