本例子記錄了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_OBJECT
private:
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);//創建item
aItem->setTextAlignment(Qt::AlignHCenter);
theModel->setItem(i,colNoName,aItem); //i行,學生列,設置item
qreal avgScore=0;
for (int j=colNoMath;j<= colNoEnglish;j++) //數學,語文,英語
{ //不包含最後一列
qreal score=50.0+(qrand() % 50);//隨機數
avgScore+=score;
aItem=new QStandardItem(QString::asprintf("%.0f",score));//創建 item
aItem->setTextAlignment(Qt::AlignHCenter);
theModel->setItem(i,j,aItem); //爲模型的某個行列位置設置Item
}
aItem=new QStandardItem(QString::asprintf("%.1f",avgScore/3));//創建平均分item
aItem->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++;
else
cnt90++;
}
//////////
item=ui->treeWidget->topLevelItem(0); //<60
item->setText(i,QString::number(cnt50));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(1); //60
item->setText(i,QString::number(cnt60));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(2); //70
item->setText(i,QString::number(cnt70));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(3); //80
item->setText(i,QString::number(cnt80));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(4); //90
item->setText(i,QString::number(cnt90));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(5); //average
item->setText(i,QString::number(sumV/theModel->rowCount()));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(6); //max
item->setText(i,QString::number(maxV));
item->setTextAlignment(i,Qt::AlignHCenter);
item=ui->treeWidget->topLevelItem(7); //min
item->setText(i,QString::number(minV));
item->setTextAlignment(i,Qt::AlignHCenter);
}
}
void MainWindow::iniBarChart()
{ //柱狀圖初始化
QChart *chart = new QChart(); //創建chart
chart->setTitle("Barchart演示");
chart->setAnimationOptions(QChart::SeriesAnimations);
ui->chartViewBar->setChart(chart); //爲ChartView設置chart
ui->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數據集,從數據模型的表頭獲取Name
QBarSet *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);//11
axisY->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的item
series->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); //最後一個設置爲exploded
series->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);// LabelsCenter
chart->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,MarkerShapeCircle
series0->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); //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::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); //獲取平均分數據的item
aItem->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));
}
喜歡我的文章就加個關注吧,以後查找筆記十分的方便喲,一起學習奧利給!