Qt Charts

Qt Charts概述

Qt Charts模块

Qt Charts模块是一组易于使用的图表组件
基于QtGraphics View架构
其核心组件是QChartViewQChart
QChartView的父类是QGraphicsView,即为Graphics View架构中的视图组件
QChartView是用于显示图表的视图
层次:QGraphicsItem-->QGraphicsObject-->QGraphicsWidget-->QChart-->QPolarChart
要在项目中使用Qt Charts模块,需在项目配置文件中增加:Qt += charts
在需要使用QtCharts的类的头文件或源程序文件中,使用如下

#include <QtCharts>
using namespace QtCharts;/Qt_CHARTS_USE_NAMESPACE

一个简单的QChart绘图程序

QWidget支持void setCentralWidget(...)// 关联子窗口,子窗口居中
QChartView

new QChartView(...)// 绑定窗口
void setChart(...)// 和QChart关联

QChart

new QChart()// 
void setTitle(...)
void addSeries(...)// 轨迹集合
void setAxisX(...)//
void setAxisY(...)//

QLineSeries

new QLineSeries()
void setName(...)
void append(...)// 二维数据点

QValueAxis

new QValueAxis()
void setRange(...)// 设置坐标轴范围
void setTitleText(...)

图表的主要组成部分

QChartViewQChart的视图组件
而一个QChart一般包括序列,坐标轴,图例,图表标题等部分

QChartView的功能

QChartViewQChart的视图组件
QChartView类定义的函数较少

void setChart(QChart* chart)
QChart* chart()
void setRubberBand(RubberBands& rubberBand)

设置选择框类型
即鼠标在视图组件上拖动选择范围的方式,是一个QChartView::RubberBand枚举类型的组合
QChartView::RubberBand枚举类型有以下几种取值:

1.QChartView::NoRubberBand
2.QChartView::VerticalRubberBand
3.QChartView::HorizontalRubberBand
4.QChartView::RectangleRubberBand

- 如:RubberBands rubberBand()
返回设置的选择框类型

序列

序列是数据的表现形式
图表的类型主要是由序列的类型决定的
常见的图表类型有折线图,柱状图,饼图,散点图等
QAbstractSeries派生出了QAreaSeries,QBoxPlotSeries,QAbstractBarSeries,QPieSeries,QXYSeries

QAbstractBarSeries派生出了QBarSeries,QHorizontalBarSeries,QHorizontalPercentBarSeries,QHorizontalStackedBarSeries,QPercentBarSeries,QStackedBarSeries

QXYSeries派生出了QLineSeries,QScatterSeries
QLineSeries派生出了QSplineSeries

坐标轴

一般的图表都有横轴和纵轴两个坐标轴
坐标轴用QValueAxis类的数值坐标轴
如用对数坐标,用QLogValueAxis
柱状图的横坐标通常是文字,可用QBarCategory作为横轴
饼图一般没坐标轴

QValueAxis			数值坐标轴
QCategoryAxis		分组数值坐标轴
QLogValueAxis		对数数值坐标轴
QBarCategoryAxis	类别坐标轴
QDateTimeAxis		日期时间坐标轴

QAbstractAxis派生了QValueAxis, QLogValueAxis, QBarCategoryAxis, QDateTimeAxis
QValueAxis派生了QCategoryAxis
坐标轴类封装了坐标轴的刻度,标签,网格线,标题等

图例

图例是对图表上显示的序列的示例说明
QLegend是封装了图例控制功能的类,可为每个序列设置图例中的文字
可控制图例显示在图表的上下左右不同位置
对图例还有一个类QLegendMarker,可为每个序列的图例生成一个类似与QCheckBox的组件

QChart绘制折线图

实例功能

图表的标题,图例,边距等属性设置
QLineSeries序列的属性设置
QValueAxis坐标轴的属性设置
图表的缩放
- 工具栏
- 主工作区图表视图
- 图表属性设置面板

主窗口类定义和初始化

#include <QtCharts>
Qt_CHARTS_USE_NAMESPACE

QLineSeries:
new QLineSeries()
void setName(...)
void setPen(...)
void clear()
void append(...)

QPen:
void setStyle(...)
void setWidth(...)
void setColor(...)

QValueAxis:
void setRange(...)
void setLabelFormat(...)
void setTickCount(...)
void setMinorTickCount(...)
void setTitleText(...)

QChart:
new QChart()
void setTitle(...)
void addSeries(...)
void setAxisX(...)
void setAxisY(...)
? series()
QString title()
QMargins margins()

QChartView:
void setChart(...)
void setRenderHint(...)
QChart* chart()
qsrand(...)

qreal:
qrand()
qSin(...)
qCos(...)

画笔设置对话框QWDialogPen

QWDialogPen,QPen支持? style()

QChart的设置

QChart是组合图表各部件,显示各种数据序列的绘图组件
QChart接口众多
QChart类的主要函数

图表外观:

void setTitle(...)
void setTitleFont(...)
void setTitleBrush(...)
void setTheme(...)
void setMargins(...)
QLegend* legend()
void setAnimationOptions()

数据序列:

void addSeries(...)
QList<QAbstractSeries*> series(...)
void removeSeries(...)
void removeAllSeries(...)

坐标轴:

void addAxis(...)
QList<QAbstractAxis*> axes()
void setAxisX(...)
void setAxisY(...)
void removeAxis(...)
void createDefaultAxes(...)

QLineSeries序列的设置

QLineSeries类的主要函数
序列名称:void setName(...)
图表:QChart* chart()
序列外观:

void setVisible()
void show()
void hide()
void setColor(...)
void setPen(...)
void setBrush(...)
void setOpacity(...)

数据点:

void setPointsVisible(...)
void append(...)
void insert(...)
void replace(...)
void clear()
void remove(...)
void removePoints(...)
int count()
QPointF& at()
QList<QPointF> points()
QVector<QPointF> pointsVector()

数据点标签:

void setPointLabelsVisible()
void setPointLabelsColor(...)
void setPointLabelsFont(...)
void setPointLabelsFormat(...)
void setPointLabelsClipping(...)

坐标轴:

bool attachAxis(...)
bool detachAxis(...)
QList<QAbstractAxis*> attachedAxes()

QLineSeries

bool isVisible()
bool pointsVisible()
int opacity()
bool pointLabelsVisible()
void setPointLabelsFormat(...)
QLineSeries& operator<<(...)
void append(...)
void attachAxis(...)

QChart支持void addAxis(...)

QValueAxis坐标轴设置

QValueAxis类的主要函数

坐标轴整体:

void setVisible(...)
Qt::Orientation orientation(...)
void setMin(...)
void setMax(...)
void setRange(...)

轴标题 :

void setTitleVisible(...)
void setTitleText(...)
void setTitleFont(...)
void setTitleBrush(...)

轴标签:

void setLabelFormat(...)
void setLabelsAngle(...)
void setLabelsBrush(...)
void setLabelsColor(...)
void setLabelsFont(...)
void setLabelsVisible(...)

轴线和刻度线:

void setTickCount(...)
void setLineVisible(...)
void setLinePen(...)
void setLinePenColor(...)

主网格线:

void setGridLineColor(...)
void setGridLinePen(...)
void setGridLineVisible(...)

次刻度和次网格线:

void setMinorTickCount(...)
void setMinorGridLineColor(...)
void setMinorGridLinePen(...)
void setMinorGridLineVisible(...)

- 坐标轴标题
- 轴线和刻度线
- 轴标签
- 主网格线
- 次网格线
QChart

QValueAxis* axisX()
QValueAxis* axisY()

QValueAxis

int min()
int max()
QString titleText()
bool isTitleVisible()
QString labelFormat()
bool labelsVisible()
bool isGridLineVisibel()
bool isLineVisible()
int tickCount()
int minorTickCount()
bool isMinorGridLineVisible()
void setLabelFormat(...)

各种常见图表的绘制

实例功能概述

除了折线图,Qt Charts还提供柱状图,饼图,百分比柱状图等常见图表

数据准备

QStringList支持QString& operator<<(...)
QTableView支持void setModel(...)
QStandardItemModel

new QStandardItemModel(...)
void setHorizontalHeaderLabels(...)
int rowCount()
void setItem(...)

signal:

itemChanged()

QStandardItem

new QStandardItem(...)
void setTextAlignment(...)
void setFlags(...)
int column(...)
int row()
QString text()

QString

QString asprintf(...)
double ToDouble()
qsrand(...)
qrand()

柱状图

柱状图的绘制

QChart

void setTitle(...)
void setAnimationOptions(...)
void removeAllSeries()
void removeAxis(...)
void addSeries(...)

QBarSet

new QBarSet(...)
void append(...)

QBarSeries

new QBarSeries(...)
void append(...)

QBarCategory,QLineSeries

new QLineSeries(...)
void setName(...)
void setPen(...)
void append(...)

对QStandardItemModel:

QStandardItem* horizontalHeaderItem(...)
int rowCount()

QStandardItem支持QString text()
QString支持int toInt()
QPen支持void setColor(...),void setWidth(...)
QChartView支持void setChart(...),void setRenderHint(...)

柱状图相关的主要类

- 如QBarSet
创建柱状图的数据集
- 如QBarSeries
柱状图序列
一个序列一般包含多个QBarSet
- 如QBarCategoryAxis
柱状图分类坐标,以文字标签形式表示

QBarSet类的主要函数功能

标签:

void setLabel(...)				设置数据集的标签,
void setLabelBrush(...)			设置标签的画刷
void setLabelColor(...)			设置标签的文字颜色
void setLabelFont(...)			设置标签的字体

数据棒:

void setBorderColor(...)		设置数据集的棒图边框颜色
void setBrush(...)				设置数据集棒图画刷
void setColor(...)				设置数据集棒图填充色
void setPen(...)				设置数据集棒图边框画笔

数据点:

void append(...)				添加一个数据到数据集
void insert(...)				从某位置插入一个数据到数据集
void remove(...)				从某位置开始删除一定数量的数据
void replace(...)				替换某个位置的数据
qreal at()
int count()
qreal sum()

QBarSeriesQAbstractBarSeries类继承而来
QBarSeries类主要实现对QBarSet的操作
QBarSeries类的主要函数功能
外观:

void setBarWidth(...)			设置数据棒宽
void setLabelsVisible(...)		设置数据棒标签可见性
void setLabelsFormat(...)		设置数据棒标签格式
void setLabelsPosition(...)  	数据棒标签位置
void setLabelsAngle(...)

数据集:

bool append(...)				添加一个QBarSet数据集序列
bool insert(...)
bool remove(...)
bool take(...)
void clear()
QList<QBarSet*> barSets()		返回数据集对象的列表
int count()

QBarCategoryAxis主要函数功能
坐标内容:

void append(...)
void insert(...)
void replace(...)
void remove(...)
void clear()
QString at(...)
int count()
void setCategories()

坐标范围:

void setMin(...)
void setMax(...)
void setRange(...)

饼图

饼图的绘制

QChartView

QChart* chart()
void removeAllSeries(...)

QPieSeries

new QPieSeries(...)
void setHoleSize(...)
void append(...)
QList<QPieSlice*> slices()
void setLabelsVisible(...)

QTreeWidgetItem,QTreeWidget

QTreeWidgetItem* topLevelItem(...)

QPieSlice

void setLabel(...)
int percentage()
void setExploded(...)

QChart

void addSeries(...)
void setTitle(...)
饼图相关的主要类

- 如QPieSeries
饼图序列
- 如QPieSlice
一个饼图的分块

QPieSeries类的主要函数功能
分块操作:

bool append(...)
bool insert(...)
bool remove(...)
bool take(...)
void clear()
QList<QPieSlice*> slices()
int count()
bool isEmpty()
qreal sum()

外观:

void setHoleSize(...)
void setPieSize(...)
void setLabelsVisible(...)

QPieSlice类的主要函数功能
数据:

QPieSeries* series()
void setValue(...)
qreal percentage()

标签:

void setLabelVisible(...)
void setLabel(...)
void setLabelBrush(...)
void setLabelColor(...)
void setLabelFont(...)
void setLabelPosition(...)

外观 :

void setExploded(...)
void setPen(...)
void setBorderColor(...)
void setBorderWidth(...)
void setBrush(...)
void setColor(...)

堆叠柱状图

QChartView支持QChart* chart()
QChart

void removeAllSeries()
void removeAxis(...)

QBarSet支持new QBarSet(...)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

raindayinrain

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

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

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

打赏作者

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

抵扣说明:

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

余额充值