【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_NAMESPACE

int 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主题。

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

  • 26
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从此不归路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值