Qt Charts

Qt Charts概述

Qt Charts模块

Qt Charts模块是一组易于使用的图表组件
基于Qt的Graphics View架构
其核心组件是QChartView和QChart
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(...)

图表的主要组成部分

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

QChartView的功能

QChartView是QChart的视图组件
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()
QBarSeries从QAbstractBarSeries类继承而来
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(...)

QStackedBarSeries


QBar

猜你喜欢

转载自blog.csdn.net/x13262608581/article/details/108954307