设置轴的刻度格式
// axisX->setLabelFormat("%g");%A 浮点数、十六进制数字和p-记法(C99)%c 一个字符%d 有符号十进制整数%e 浮点数、e-记数法%E 浮点数、E-记数法%f 浮点数、十进制记数法%g 根据数值不同自动选择%f或%e.%G 根据数值不同自动选择%f或%e.%i 有符号十进制数(与%d相同)%o 无符号八进制整数%p 指针%s 字符串%u 无符号十进制整数%x 使用十六进制数字0f的无符号十六进制整数%X 使用十六进制数字0f的无符号十六进制整数%% 打印一个百分号
设置散点图和线性图

dialogGUI.h
#ifndef DIALOG_GUI_H#define DIALOG_GUI_H#include <QDialog>#include <QCache>#include <QtCharts>#include <QtCharts/QSplineSeries>#include <QDateTime>#include <QByteArray>namespace Ui {class DialogGUI;}class DialogGUI : public QDialog{Q_OBJECTpublic:explicit DialogGUI(QWidget *parent = 0);~DialogGUI();QList<QPointF > PointF;void sltCategoriesChanged(QByteArray);float publicFloatFun(QByteArray dat, quint8 basic_addres);public slots:private slots:// void sltpushButton();// void sltpushButton_2();// void sltpushButton_3();signals:private:Ui::DialogGUI *ui;void initline();QChart* m_chart;QLineSeries* m_lineSeries;QScatterSeries* m_scatterSeries;QBarCategoryAxis* m_axis;QValueAxis* m_axisY;QValueAxis* m_axisX;QChartView* m_chartView;QList<int> m_list;};#endif // DialogGUI_H
dialogGUI.cpp
#include "dialogGUI.h"#include "ui_dialogGUI.h"#include <QtCharts/QAbstractAxis>#include <QtCharts/QValueAxis>#include <QtCore/QTime>#include <QtCore/QDebug>#include <QPen>#include <QPainter>#include <QtCharts\QLegendMarker>#include <QChartView>#define debug qDebug() << "[" << __FILE__ << ":" << __LINE__ << "]" // 调试DialogGUI::DialogGUI(QWidget *parent) :QDialog(parent),ui(new Ui::DialogGUI){ui->setupUi(this);// initChart("name", 10, 50);float a = 1.32;float b = 5.56;PointF.append(QPointF(a, b));PointF.append(QPointF(3, 0));PointF.append(QPointF(7, 6));PointF.append(QPointF(9, 7));PointF.append(QPointF(10, 6));PointF.append(QPointF(8, 6));PointF.append(QPointF(5, 2));PointF.append(QPointF(7, 9));PointF.append(QPointF(8, 6));PointF.append(QPointF(15, 6));// 初始化initline();}DialogGUI::~DialogGUI(){delete ui;}/*-------------------------------------------------------------*/void DialogGUI::initline(){m_chart = new QChart();m_chart->setAnimationOptions(QChart::SeriesAnimations);// 线性图m_lineSeries = new QLineSeries(m_chart);m_lineSeries->setPen(QPen(Qt::lightGray,2,Qt::SolidLine));m_lineSeries->setColor(QColor(248, 167, 0));// 散点图m_scatterSeries = new QScatterSeries(m_chart);m_scatterSeries->setMarkerShape(QScatterSeries::MarkerShapeRectangle); // 设置标志形状m_scatterSeries->setMarkerSize(7); // 设置标记大小// 将线性图和散点图添加到图表上m_chart->addSeries(m_lineSeries);m_chart->addSeries(m_scatterSeries);m_chart->setTitle("单表标定点数"); // 设置曲线名字// 循环添加foreach (QPointF item, PointF) {m_lineSeries->append(item); // 添加折线m_scatterSeries->append(item); // 添加散点}// x轴m_axisX = new QValueAxis;m_axisX->setRange(0, 60); // 设置x轴范围m_axisX->setTickCount(10); //设置多少格m_axisX->setMinorTickCount(5); //设置每格小刻度线的数目m_chart->setAxisX(m_axisX, m_lineSeries);m_chart->setAxisX(m_axisX, m_scatterSeries);// m_chart->createDefaultAxes(); // 创建默认轴// m_chart->axisX()->setRange(0, 30); // 设置x轴范围// m_chart->setAcceptTouchEvents(true); // 设置接受触摸事件m_axisY = new QValueAxis;m_axisY->setRange(0, 30); // 设置y轴范围// m_axisY->setLabelFormat("%u"); //设置刻度的格式// m_axisY->setGridLineVisible(true); // 设置网格线可见m_axisY->setTickCount(10); //设置多少格m_axisY->setMinorTickCount(5); //设置每格小刻度线的数目m_chart->setAxisY(m_axisY, m_lineSeries);m_chart->setAxisY(m_axisY, m_scatterSeries);m_chart->legend()->setVisible(true);m_chart->legend()->setAlignment(Qt::AlignBottom);m_chart->legend()->hide(); // 隐藏图表说明// 视图m_chartView = new QChartView(m_chart);m_chartView->setRenderHint(QPainter::Antialiasing); // 抗锯齿// 设置主题m_chartView->chart()->setTheme(QChart::ChartThemeBrownSand);// 颜色QPalette pal = window()->palette();pal.setColor(QPalette::Window, QRgb(0x9e8965));pal.setColor(QPalette::WindowText, QRgb(0x404044));window()->setPalette(pal); // 设置调色板ui->verticalLayout->addWidget(m_chartView); // 将图表添加到ui上}// 槽函数,用于接收数据并显示到gui上void DialogGUI::sltCategoriesChanged(QByteArray data){m_lineSeries->clear();m_scatterSeries->clear();m_chart->axisX()->setRange(0, publicFloatFun(data ,3 + 29 * 8)); // 设置x轴范围// m_axisX->setRange(0, publicFloatFun(data ,3 + 29 * 8)); // 设置x轴范围m_axisY->setRange(0, publicFloatFun(data ,7 + 29 * 8)); // 设置y轴范围for(uchar i = 0; i < 30; i++){m_lineSeries->append(publicFloatFun(data ,3 + i * 8), publicFloatFun(data ,7 + i * 8)); // 添加折线m_scatterSeries->append(publicFloatFun(data ,3 + i * 8), publicFloatFun(data ,7 + i * 8)); // 添加散点}debug << "刷新GUI数据";}// 公共函数float DialogGUI::publicFloatFun(QByteArray dat, quint8 basic_addres){union{float a;quint8 dat[4];}f_to_dat;f_to_dat.dat[0] = dat[basic_addres + 0];f_to_dat.dat[1] = dat[basic_addres + 1];f_to_dat.dat[2] = dat[basic_addres + 2];f_to_dat.dat[3] = dat[basic_addres + 3];return f_to_dat.a;}/*-------------------------------------------------------------*/
