本例子记录了QChart图的其他常见表格的绘制,方便实用,需要的同学可以下载下来,当作例子来看。

使用QChart一定要记得 在的你工程文件下加上: QT += charts

话不多说,我们先上例子效果吧:

界面布局可以参考例子:

链接:本文链接例子  提取码:f1u8

话不多说上例子程序:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>#include    <QStandardItemModel>
#include    <QItemSelectionModel>#include    <QtCharts>  //必须这么设置
//using namespace QtCharts;   //必须这么设置
QT_CHARTS_USE_NAMESPACE#define     fixedColumnCount   5    //数据模型的列数
#define     iniDataRowCount    40   //学生个数#define     colNoName       0   //姓名的列编号
#define     colNoMath       1   //数学的列编号
#define     colNoChinese    2   //语文的列编号
#define     colNoEnglish    3   //英语的列编号
#define     colNoAverage    4   //平均分的列编号namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTprivate:QStandardItemModel  *theModel;//数据模型
//    QItemSelectionModel *theSelection;//Item选择模型void    iniData();//初始化数据void    surveyData();//统计数据void    iniBarChart(); //柱状图初始化void    buildBarChart();//构建柱状图void    iniPiewChart(); //饼图初始化void    buildPieChart(); //构建饼图void    iniStackedBar(); //堆积图初始化void    buildStackedBar(); //构建堆积图void    iniPercentBar(); //初始化void    buildPercentBar(); //构建图表void    iniScatterChart(); //初始化void    buildScatterChart(); //构建图表private slots:
//三个分数列的数据发生变化,重新计算平均分void on_itemChanged(QStandardItem *item);void on_PieSliceHighlight(bool show);void on_chartBarLegendMarkerClicked();
///void on_actTongJi_triggered();void on_actGenData_triggered();void on_btnBuildBarChart_clicked();//    void on_cBoxCourse_currentIndexChanged(int index);void on_btnDrawPieChart_clicked();void on_cBoxCourse_currentIndexChanged(int index);void on_spinHoleSize_valueChanged(double arg1);void on_spinPieSize_valueChanged(double arg1);void on_btnBuildStackedBar_clicked();void on_btnPercentBar_clicked();void on_btnScatter_clicked();void on_cBoxTheme_currentIndexChanged(int index);public:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

对应的cpp文件:

#include "mainwindow.h"
#include "ui_mainwindow.h"#include    <QTime>
#include    <QBarSet>
#include    <QInputDialog>void MainWindow::iniData()
{ //数据初始化QStringList     headerList;headerList<<"姓名"<<"数学"<<"语文"<<"英语"<<"平均分";theModel->setHorizontalHeaderLabels(headerList); //设置表头文字//    QString studName;
//    QStandardItem   *aItem;
//    qreal   score,avgScore;qsrand(QTime::currentTime().second());//随机数种子for (int i=0;i<theModel->rowCount();i++){QString studName=QString::asprintf("学生%2d",i+1);QStandardItem*  aItem=new QStandardItem(studName);//创建itemaItem->setTextAlignment(Qt::AlignHCenter);theModel->setItem(i,colNoName,aItem); //i行,学生列,设置itemqreal avgScore=0;for (int j=colNoMath;j<= colNoEnglish;j++) //数学,语文,英语{ //不包含最后一列qreal score=50.0+(qrand() % 50);//随机数avgScore+=score;aItem=new QStandardItem(QString::asprintf("%.0f",score));//创建 itemaItem->setTextAlignment(Qt::AlignHCenter);theModel->setItem(i,j,aItem); //为模型的某个行列位置设置Item}aItem=new QStandardItem(QString::asprintf("%.1f",avgScore/3));//创建平均分itemaItem->setTextAlignment(Qt::AlignHCenter);aItem->setFlags(aItem->flags() & (!Qt::ItemIsEditable));//平均分不允许编辑theModel->setItem(i,colNoAverage,aItem); //平均分}
}void MainWindow::surveyData()
{ //数据统计int cnt50,cnt60,cnt70,cnt80,cnt90;qreal   sumV,minV,maxV;qreal   val;QTreeWidgetItem *item; //节点int i,j;for(i=colNoMath;i<=colNoAverage;i++){sumV=0;cnt50=0;cnt60=0;cnt70=0;cnt80=0;cnt90=0;for(j=0;j<theModel->rowCount();j++){val=theModel->item(j,i)->text().toDouble();if (j==0){minV=val;maxV=val;}if (val<minV)minV=val;if (val>maxV)maxV=val;//sumV+=val;if (val<60)cnt50++;else if ((val>=60) && (val<70))cnt60++;else if ((val>=70) && (val<80))cnt70++;else if ((val>=80) && (val<90))cnt80++;elsecnt90++;}//item=ui->treeWidget->topLevelItem(0); //<60item->setText(i,QString::number(cnt50));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(1); //60item->setText(i,QString::number(cnt60));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(2); //70item->setText(i,QString::number(cnt70));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(3); //80item->setText(i,QString::number(cnt80));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(4); //90item->setText(i,QString::number(cnt90));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(5); //averageitem->setText(i,QString::number(sumV/theModel->rowCount()));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(6); //maxitem->setText(i,QString::number(maxV));item->setTextAlignment(i,Qt::AlignHCenter);item=ui->treeWidget->topLevelItem(7); //minitem->setText(i,QString::number(minV));item->setTextAlignment(i,Qt::AlignHCenter);}
}void MainWindow::iniBarChart()
{ //柱状图初始化QChart *chart = new QChart(); //创建chartchart->setTitle("Barchart演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewBar->setChart(chart); //为ChartView设置chartui->chartViewBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildBarChart()
{ //构造柱状图
//#define     colNoName       0
//#define     colNoMath       1
//#define     colNoChinese    2
//#define     colNoEnglish    3
//#define     colNoAverage    4//    ui->chartViewBar->chart()->removeAllSeries();
//    ui->chartViewBar->chart()->removeAxis();QChart *chart =ui->chartViewBar->chart(); //获取ChartView关联的chart
//    if(chart->series().count()>0)chart->removeAllSeries(); //删除所有序列chart->removeAxis(chart->axisX()); //删除坐标轴chart->removeAxis(chart->axisY()); //删除坐标轴//创建三个QBarSet数据集,从数据模型的表头获取NameQBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());QLineSeries *Line = new QLineSeries(); //创建一个QLineSeries序列用于显示平均分Line->setName(theModel->horizontalHeaderItem(colNoAverage)->text());QPen    pen;pen.setColor(Qt::red);pen.setWidth(2);Line->setPen(pen);
//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");for(int i=0;i<theModel->rowCount();i++){//从数据模型获取数据setMath->append(theModel->item(i,colNoMath)->text().toInt()); //数学setChinese->append(theModel->item(i,colNoChinese)->text().toInt()); //语文setEnglish->append(theModel->item(i,colNoEnglish)->text().toInt()); //英语Line->append(QPointF(i,theModel->item(i,colNoAverage)->text().toFloat()));  //平均分}//创建一个柱状图序列 QBarSeries, 并添加三个数据集QBarSeries *series = new QBarSeries();series->append(setMath);series->append(setChinese);series->append(setEnglish);
//    series->setLabelsVisible(true);
//    series->setLabelsPosition(QAbstractBarSeries::LabelsOutsideEnd);// LabelsCenter
//    series->setLabelsPosition(QAbstractBarSeries::LabelsCenter);// LabelsCenter//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");chart->addSeries(series); //添加柱状图序列chart->addSeries(Line); //添加折线图序列//用于横坐标在字符串列表,即学生姓名QStringList categories;for (int i=0;i<theModel->rowCount();i++)categories <<theModel->item(i,colNoName)->text();//用于柱状图的坐标轴QBarCategoryAxis *axisX = new QBarCategoryAxis();axisX->append(categories); //添加横坐标文字列表
//    chart->createDefaultAxes();chart->setAxisX(axisX, series); //设置横坐标chart->setAxisX(axisX, Line);//设置横坐标axisX->setRange(categories.at(0), categories.at(categories.count()-1)); //这只坐标轴范围//数值型坐标作为纵轴QValueAxis *axisY = new QValueAxis;axisY->setRange(0, 100);axisY->setTitleText("分数");axisY->setTickCount(6);//11axisY->setLabelFormat("%.0f"); //标签格式
//    axisY->setGridLineVisible(false);
//    axisY->setMinorTickCount(4);chart->setAxisY(axisY, series); //为chart->setAxisY(axisY, Line);//    lineseries->setPointLabelsVisible(true);
//    lineseries->setPointLabelsFormat("@yPoint");chart->legend()->setVisible(true); //显示图例chart->legend()->setAlignment(Qt::AlignBottom); //图例显示在下方//    foreach (QLegendMarker* marker, chart->legend()->markers()) {
//        QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));
//        QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));
//    }}void MainWindow::iniPiewChart()
{ //饼图初始化QChart *chart = new QChart();chart->setTitle(" Piechart演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewPie->setChart(chart);ui->chartViewPie->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildPieChart()
{ //绘制饼图QChart *chart =ui->chartViewPie->chart(); //获取chart对象chart->removeAllSeries(); //删除所有序列int colNo=1+ui->cBoxCourse->currentIndex(); //获取分析对象,数学、英语、语文或平均分
//    QTreeWidgetItem *item; //节点QPieSeries *series = new QPieSeries(); //创建饼图序列series->setHoleSize(ui->spinHoleSize->value()); //饼图中间空心的大小for (int i=0;i<=4;i++) //添加分块数据{QTreeWidgetItem*  item=ui->treeWidget->topLevelItem(i); //获得QTreeWidgetItem的itemseries->append(item->text(0),item->text(colNo).toFloat()); //添加一个饼图分块数据,标签,数值}QPieSlice *slice; //饼图分块for(int i=0;i<=4;i++) //设置每个分块的标签文字{slice =series->slices().at(i);  //获取分块slice->setLabel(slice->label()+QString::asprintf(": %.0f人, %.1f%%",    //设置分块的标签slice->value(),slice->percentage()*100));
//信号与槽函数关联,鼠标落在某个分块上时,此分块弹出connect(slice, SIGNAL(hovered(bool)),this, SLOT(on_PieSliceHighlight(bool)));}slice->setExploded(true); //最后一个设置为explodedseries->setLabelsVisible(true); //只影响当前的slices,必须添加完slice之后再设置chart->addSeries(series); //添加饼图序列chart->setTitle("Piechart----"+ui->cBoxCourse->currentText());chart->legend()->setVisible(true); //图例chart->legend()->setAlignment(Qt::AlignRight);//Qt::AlignRight
//    chart->legend()->setAlignment(Qt::AlignBottom);//Qt::AlignRight
}void MainWindow::iniStackedBar()
{//初始化叠加柱状图绘制窗口QChart *chart = new QChart();chart->setTitle("StackedBar 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewStackedBar->setChart(chart);ui->chartViewStackedBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildStackedBar()
{//绘制叠加柱状图QChart *chart =ui->chartViewStackedBar->chart(); //获取QChart对象chart->removeAllSeries();//删除所有序列chart->removeAxis(chart->axisX()); //删除坐标轴chart->removeAxis(chart->axisY());//创建三门课程的数据集QBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());for(int i=0;i<theModel->rowCount();i++){ //添加分数数据到数据集setMath->append(theModel->item(i,colNoMath)->text().toInt());setChinese->append(theModel->item(i,colNoChinese)->text().toInt());setEnglish->append(theModel->item(i,colNoEnglish)->text().toInt());}//创建   QStackedBarSeries对象并添加数据集QStackedBarSeries *series = new QStackedBarSeries();series->append(setMath);series->append(setChinese);series->append(setEnglish);series->setLabelsVisible(true);//显示每段的标签
//    series->setLabelsPosition(QAbstractBarSeries::LabelsCenter);// LabelsCenterchart->addSeries(series); //添加序列到图表QStringList categories;for (int i=0;i<theModel->rowCount();i++)categories <<theModel->item(i,colNoName)->text();QBarCategoryAxis *axisX = new QBarCategoryAxis(); //类别坐标轴,作为横轴axisX->append(categories);chart->setAxisX(axisX, series);
//    chart->setAxisX(axisX, lineseries);axisX->setRange(categories.at(0), categories.at(categories.count()-1));QValueAxis *axisY = new QValueAxis; //数值坐标轴,作为纵轴axisY->setRange(0, 300);axisY->setTitleText("总分");axisY->setTickCount(6);axisY->setLabelFormat("%.0f"); //标签格式chart->setAxisY(axisY, series);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignBottom);
}void MainWindow::iniPercentBar()
{//百分比柱状图初始化QChart *chart = new QChart();chart->setTitle("PercentBar 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewPercentBar->setChart(chart);ui->chartViewPercentBar->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildPercentBar()
{//绘制百分比柱状图QChart *chart =ui->chartViewPercentBar->chart();chart->removeAllSeries();chart->removeAxis(chart->axisX());chart->removeAxis(chart->axisY());//创建数据集QBarSet *setMath = new QBarSet(theModel->horizontalHeaderItem(colNoMath)->text());QBarSet *setChinese = new QBarSet(theModel->horizontalHeaderItem(colNoChinese)->text());QBarSet *setEnglish= new QBarSet(theModel->horizontalHeaderItem(colNoEnglish)->text());QTreeWidgetItem *item; //节点QStringList categories;for (int i=0;i<=4;i++){//从分数段统计数据表里获取数据,添加到数据集item=ui->treeWidget->topLevelItem(i);categories<<item->text(0);//用作横坐标的标签setMath->append(item->text(colNoMath).toFloat());setChinese->append(item->text(colNoChinese).toFloat());setEnglish->append(item->text(colNoEnglish).toFloat());}QPercentBarSeries *series = new QPercentBarSeries(); //序列series->append(setMath);series->append(setChinese);series->append(setEnglish);series->setLabelsVisible(true);//显示百分比
//    series->setLabelsFormat("@value人");chart->addSeries(series);QBarCategoryAxis *axisX = new QBarCategoryAxis(); //横坐标axisX->append(categories);chart->setAxisX(axisX, series);axisX->setRange(categories.at(0), categories.at(categories.count()-1));QValueAxis *axisY = new QValueAxis;//纵坐标axisY->setRange(0, 100);axisY->setTitleText("百分比");axisY->setTickCount(6);axisY->setLabelFormat("%.1f"); //标签格式chart->setAxisY(axisY, series);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignRight); //AlignBottom
}void MainWindow::iniScatterChart()
{//散点图初始化QChart *chart = new QChart();chart->setTitle("QScatterSeries 和 QSplineSeries 演示");chart->setAnimationOptions(QChart::SeriesAnimations);ui->chartViewScatter->setChart(chart);ui->chartViewScatter->setRenderHint(QPainter::Antialiasing);
}void MainWindow::buildScatterChart()
{ //绘制 QScatterSeries和QSplineSeries图QChart *chart =ui->chartViewScatter->chart();chart->removeAllSeries();chart->removeAxis(chart->axisX());chart->removeAxis(chart->axisY());QSplineSeries *seriesLine = new QSplineSeries(); //光滑曲线序列seriesLine->setName("spline");QPen pen;pen.setColor(Qt::blue);pen.setWidth(2);
//    seriesLine->setColor(Qt::blue);seriesLine->setPen(pen);QScatterSeries *series0 = new QScatterSeries(); //散点序列series0->setName("散点");series0->setMarkerShape(QScatterSeries::MarkerShapeCircle);//MarkerShapeRectangle,MarkerShapeCircleseries0->setBorderColor(Qt::black);series0->setBrush(QBrush(Qt::red));series0->setMarkerSize(12);//    int x,y;qsrand(QTime::currentTime().second());//随机数种子for (int i=0;i<10;i++){int x=(qrand() % 20);//0到20之间的随机数int y=(qrand() % 20);series0->append(x,y); //散点序列seriesLine->append(x,y); //光滑曲线序列}chart->addSeries(series0);chart->addSeries(seriesLine);//    QValueAxis *axisY = new QValueAxis;
//    axisY->setRange(0, 20);
//    axisY->setTitleText("Y");
//    axisY->setTickCount(11);
//    axisY->setLabelFormat("%.0f"); //标签格式
//    axisY->setGridLineVisible(true);
//    chart->setAxisY(axisY, series0);
//    chart->setAxisY(axisY, seriesLine);//    QValueAxis *axisX = new QValueAxis;
//    axisX->setRange(0, 20);
//    axisX->setTitleText("X");
//    axisX->setTickCount(11);
//    axisX->setLabelFormat("%.0f"); //标签格式
//    axisX->setGridLineVisible(true);
//    chart->setAxisX(axisX, series0);
//    chart->setAxisX(axisX, seriesLine);chart->createDefaultAxes(); //创建缺省的坐标轴chart->axisX()->setTitleText("X 轴");chart->axisX()->setRange(-2,22);chart->axisY()->setTitleText("Y 轴");chart->axisY()->setRange(-2,22);//    chart->setDropShadowEnabled(true);chart->legend()->setVisible(true);chart->legend()->setAlignment(Qt::AlignRight); //AlignBottomforeach (QLegendMarker* marker, chart->legend()->markers()) {QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_chartBarLegendMarkerClicked()));}}void MainWindow::on_itemChanged(QStandardItem *item)
{ //自动计算平均分if ((item->column()<colNoMath) || (item->column()>colNoEnglish))return; //如果被修改的item不是数学、语文、英语,就退出int rowNo=item->row(); //获取数据的行编号qreal   avg=0;QStandardItem   *aItem;for (int i=colNoMath;i<=colNoEnglish;i++){ //获取三个分数的和aItem=theModel->item(rowNo,i);avg+=aItem->text().toDouble();}avg=avg/3; //计算平均分aItem=theModel->item(rowNo,colNoAverage); //获取平均分数据的itemaItem->setText(QString::asprintf("%.1f",avg)); //更新平均分数据
}void MainWindow::on_PieSliceHighlight(bool show)
{ //鼠标移入、移出时触发hovered()信号,动态设置setExploded()效果QPieSlice *slice;slice=(QPieSlice *)sender();
//    slice->setLabelVisible(show);slice->setExploded(show);
}void MainWindow::on_chartBarLegendMarkerClicked()
{QLegendMarker* marker = qobject_cast<QLegendMarker*> (sender());switch (marker->type()){case QLegendMarker::LegendMarkerTypeXY:{marker->series()->setVisible(!marker->series()->isVisible());marker->setVisible(true);break;}case QLegendMarker::LegendMarkerTypeBar:{ //bar不好处理, barset不能被隐藏,只能take,但是无法恢复marker->series()->setVisible(!marker->series()->isVisible());marker->setVisible(true);//            QBarSet *barset;
//            QBarLegendMarker    *barsetMarker;//            barsetMarker=qobject_cast<QBarLegendMarker*>(sender());
//            barset=barsetMarker->barset();//
//            barsetMarker->series()->take(barset);////            marker->setVisible(true);break;}//            qreal alpha = 1.0;
//            if (!marker->series()->isVisible())
//                alpha = 0.5;//            QColor color;
//            QBrush brush = marker->labelBrush();
//            color = brush.color();
//            color.setAlphaF(alpha);
//            brush.setColor(color);
//            marker->setLabelBrush(brush);//            brush = marker->brush();
//            color = brush.color();
//            color.setAlphaF(alpha);
//            brush.setColor(color);
//            marker->setBrush(brush);//            QPen pen = marker->pen();
//            color = pen.color();
//            color.setAlphaF(alpha);
//            pen.setColor(color);
//            marker->setPen(pen);
//            break;
//        }default:break;}}MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);theModel = new QStandardItemModel(iniDataRowCount,fixedColumnCount,this); //数据模型
//    theSelection = new QItemSelectionModel(theModel);//Item选择模型选择当前单元格变化时的信号与槽
//    connect(theSelection,SIGNAL(currentChanged(QModelIndex,QModelIndex)),
//            this,SLOT(on_currentChanged(QModelIndex,QModelIndex)));iniData(); //初始化数据surveyData();//数据统计
//数据模块的 itemChanged信号与自定义的槽函数关联,用于自动计算平均分connect(theModel,SIGNAL(itemChanged(QStandardItem *)),this,SLOT(on_itemChanged(QStandardItem *)));ui->tableView->setModel(theModel); //设置数据模型
//    ui->tableView->setSelectionModel(theSelection);//设置选择模型
//    this->setCentralWidget(ui->splitter);iniBarChart(); //柱状图初始化iniPiewChart();//饼图初始化iniStackedBar();//堆积图初始化iniPercentBar();//百分比图初始化iniScatterChart(); //散点图初始化
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actTongJi_triggered()
{surveyData();
}void MainWindow::on_actGenData_triggered()
{iniData();surveyData();
//    bool    ok=false;
//    int cnt=QInputDialog::getInt(this,"输入整数","请输入学生人数",theModel->rowCount(),5,200,1,&ok);
//    if (ok)
//    {
//       theModel->setRowCount(cnt);
//       iniData();
//       surveyData();
//    }
}void MainWindow::on_btnBuildBarChart_clicked()
{buildBarChart();
//    ui->btnBuildBarChart->setEnabled(false);
}void MainWindow::on_btnDrawPieChart_clicked()
{buildPieChart();
}void MainWindow::on_cBoxCourse_currentIndexChanged(int index)
{Q_UNUSED(index);buildPieChart();
}void MainWindow::on_spinHoleSize_valueChanged(double arg1)
{//QPieSeries  *series;series=(QPieSeries*)ui->chartViewPie->chart()->series().at(0);series->setHoleSize(arg1);
}void MainWindow::on_spinPieSize_valueChanged(double arg1)
{QPieSeries  *series;series=(QPieSeries*)ui->chartViewPie->chart()->series().at(0);series->setPieSize(arg1);
}void MainWindow::on_btnBuildStackedBar_clicked()
{buildStackedBar();
}void MainWindow::on_btnPercentBar_clicked()
{buildPercentBar();
}void MainWindow::on_btnScatter_clicked()
{buildScatterChart();
}void MainWindow::on_cBoxTheme_currentIndexChanged(int index)
{ui->chartViewPie->chart()->setTheme(QChart::ChartTheme(index));
}

喜欢我的文章就加个关注吧,以后查找笔记十分的方便哟,一起学习奥利给!

《 QT5.9 c++ 开发指南》各种常见图表的绘制(一个例子让你不再担心表图的绘制)相关推荐

  1. 【QT】《Qt5.9 C++开发指南》在桌面上放个伊芙利特

    前言 就是像QQ宠物一样,在电脑屏幕上设计一个"智能点"的窗口或者就放一个可交互的GIF--(提前准备一批透明背景的GIF图和分解出来的透明背景的PNG图) 无边框&透明背 ...

  2. Android插件化开发指南——Hook技术(一)【长文】

    文章目录 1. 前言 2. 将外部dex加载到宿主app的dexElements中 3. 插件中四大组件的调用思路 4. Hook 2.1 对startActivity进行Hook 2.1.1 AMS ...

  3. [转]Android敏捷开发指南

    原文地址:http://www.apkbus.com/android-72730-1-1.html 本文紧密结合移动开发方法与技术,围绕Android平台的开发探讨提供更高质量移动产品的解决方案.作者 ...

  4. Hue开发指南 - 提交 Spark 程序

    目录 Hue开发指南 1.Spark文件打包成一个Jar包提交Hue运行 1.1 上传Spark Jar包至HDFS文件系统 1.2.Hue中创建Spark任务 2.多jar包导入执行(依赖jar包与 ...

  5. 蚂蚁区块链BaaS平台应用开发指南(四):JavaSDK的接入

    在尝试本节的样例代码前,需要保证目标智能合约已经按照蚂蚁区块链BaaS平台应用开发指南(三):从一个简单合约开始中的做法编译部署成功. 基于JavaSDK的接入 在上一节里,我们通过Cloud IDE ...

  6. Vue全家桶快速开发指南

    Vue全家桶快速开发指南着手与项目 环境配置 安装npm 安装vuecli4.x 构建项目 图形化构建 命令行配置 代码目录 vue-router 定义组件 组件的作用 如何定义组件 在需要他显示的h ...

  7. qt5.9开发指南 例子

    qt5.9开发指南 例子 painter.setWindow(-100,-100,200,200); void QPainter::setWindow(int x, int y, int width, ...

  8. qdir 类似工具_Qt 5.9 C++开发指南 PDF 高质量影印版

    给大家带来的一篇关于Qt开发相关的电子书资源,介绍了关于QT5.9编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小276.3 MB,王维波编写,目前豆瓣.亚马逊.当当.京东等电子书综 ...

  9. JFreeChart 1.0.6 用户开发指南(中文)

    JFreeChart 1.0.6 用户开发指南(中文) 草稿(0.9.0) 2007-10-25 2000-2007, Object Refinery Limited. All rights rese ...

最新文章

  1. HTML5之Viewport详解
  2. 在Linux 上安装WAS7.0
  3. PowerDesigner建立UML序列图
  4. 栈、堆、静态存储区和程序的内存布局
  5. qt5.5 静态编译 mysql_QT5.3.2+mingw静态编译(生成exe大约14M)
  6. 得力助手 消防员的 消防机器人_消防机器人:消防员的“得力助手”
  7. 根据guid读取Opportunity的技术实现
  8. java线程代码实现_Java 实现线程的2种方法的具体代码实例
  9. 创建邮箱过程中的问题及解决办法
  10. Openstack面试题和知识点总结
  11. 线程停止继续_线程不是你想中断就能中断
  12. qt如何创建桌面快捷方式_如何用Qt Python创建简单的桌面条形码应用
  13. 客户关系管理系统-帮管客CRM客户管理系统 v3.0.1
  14. redis 3.0的集群部署
  15. Linux命令之awk:运算与判断(三)
  16. 迪杰斯特拉算法(dijkstra)
  17. 软件工程---团队作业4
  18. 怎么使用outlook发送邮件?outlook群发邮件怎么撤回?
  19. Elasticsearch之中文分词器插件es-ik的自定义热更新词库
  20. Ecshop会员注册的Email 电子邮箱改成非必填项

热门文章

  1. 联想台式机计算机接口,如果不能使用Lenovo台式计算机的USB接口怎么办
  2. 51单片机c语言工作手册,51单片机C语言编程手册
  3. Java 空格“ ”、空字符串“”和null区别
  4. 联通宽带在停电以后断网,重启猫还是没网,可能是设置出问题了
  5. squid完全攻略 squid优化后详细安装步骤
  6. NOMAD 与 KUBERNETES:比较容器编排工具——翻译版
  7. EXP9 web安全基础实践
  8. debian/ubuntu和centos的系统升级命令
  9. 浅谈递归函数—C语言
  10. 关于数据清洗的常见方式