Qtcharts 组件基于GraphicsView
模式实现,其核心是QChartView
和QChart
的二次封装版。
- QChart:类似于容器,可以加载不同的表,通过QChartView显示;
- QChartView:是显示QChart是视图类;
1.在pro文件中包含QT += charts
来引入绘图类库。
头文件中定义QT_CHARTS_USE_NAMESPACE
宏,这样才可以正常的使用绘图功能。
一般情况下我们会在mainwindows.h头文件中增加如下代码段。
#include <QMainWindow>
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE
// 解决MSVC编译时,界面汉字乱码的问题
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
QChartView 是用于在界面中显示图表的视图类,继承自 QGraphicsView,负责处理图形显示和用户交互,
QChart 是图表的模型类,用于管理图表的各种属性、数据系列和坐标轴等内容。
创建图表时,首先需要创建一个 QChart 对象,并通过该对象添加数据系列、设置标题等属性。然后将 QChart 对象设置给 QChartView,以便 QChartView 可以显示该图表。
将chart添加到chartview中
ui->widget->setChart(chart);
2.由于QT中不存在单独的绘图画布,因此在绘图前我们需要在窗体中放入一个graphicsView
组件。
并在该组件上右键将其提升为QChartView
// 将两个饼状分区加入series
QPieSeries *series = new QPieSeries(this);
series->append(slice_1);
series->append(slice_2);
折线图 QLineSeries *zz = new QLineSeries();
//构建一个QChart对象。
QChart* chart = new QChart();
//构建了一个折线系列对象,并且对它进行初始化。方法是调用append()接口,传递的参数x、y对用的是一组坐标数据。就是折线上的一个点
QLineSeries *series = new QLineSeries();
for (quint32 i = 0; i < 100; i++) {
series->append(i, sin(0.6f*i));
}
// 将系列添加到图表,并创建默认的坐标轴。
chart->addSeries(series);
chart->createDefaultAxes(); // 基于已添加到图表的 series 来创建默认的坐标轴
ui->widget->setChart(chart);
QCustomPlot
QCustomPlot 是一个基于 Qt C++ 库的开源绘图库,用于创建各种类型的图表和绘图应用程序。
Qt Charts 提供了一组预定义的图表类型,包括线性图、柱状图、饼图等。虽然它提供了一定程度的定制选项,但相比于 QCustomPlot,它的定制性和灵活性较低。
1.拖动一个Widget控件到ui设计器上,对这个窗体点击右键,选择提升为
2.如果Qt版本在5.0以上,需要在.pro文件中的QT变量加上printsupport:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
设置定时器间隔1s,定时器超时就发送timeout信号,槽函数去重新计算数据,并放在xy轴,
// x轴设置属性
customplot->xAxis->setLabel("x轴数据");// 设置x轴的标签
customplot->xAxis->setRange(0,60);// 设置x轴的范围为(-1,1)
customplot->xAxis->setPadding(30);//设置外边距,数值可以改大或者改小来观察效果
customplot->xAxis->setLabelPadding(20);//设置标签内边距
customplot->xAxis->setTickLabelPadding(10);
-
限制的样式和布局:
- 对于预定义的图表类型,Qt Charts 提供了一些固定的样式和布局选项。虽然可以通过一些属性来调整图表的外观,如颜色、字体等,但在样式和布局上的自定义选项相对受限。
Qt Charts 适用于简单的图表展示需求,提供了一组易于使用的预定义图表类型和基本的定制选项,对于一般的图表展示场景已经足够。但如果需要更高度定制、复杂的图表展示,以及对交互和事件处理有较高要求的话,QCustomPlot 则是一个更适合的选择,因为它提供了更灵活、自定义性强的图表绘制和交互功能。
qInstallMessageHandler
qInstallMessageHandler
是 Qt 框架中用于安装自定义消息处理器的函数。它的作用是将一个自定义的消息处理函数注册到 Qt 的消息处理系统中,从而可以捕获和处理 Qt 发出的各种消息、警告和错误信息。
enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtInfoMsg, QtSystemMsg = QtCriticalMsg };