1.首先在工程文件.pro 中添加
QT += charts
2.添加头文件
#include <QChartView>
#include <QtCharts>
3.在ui文件中添加 QChartView控件 命名chartViewLearnProcess
4.代码
void MainForm::init_learnProcess_chart()
{
QChart *chart = new QChart();
chart->setTitle("学习进度展示"); //标题
chart->setAnimationOptions(QChart::SeriesAnimations);//图表中的图形序列将以动画方式显示
ui->chartViewLearnProcess->setChart(chart);
ui->chartViewLearnProcess->setRenderHint(QPainter::Antialiasing);
}
//建立图表 内容
void MainForm::build_learnProcess_chart()
{
QChart *chart = ui->chartViewLearnProcess->chart();
chart->removeAllSeries();
if(chart->axisX() != NULL)
chart->removeAxis(chart->axisX());
if(chart->axisY() != NULL)
chart->removeAxis(chart->axisY());
int count=login_group->listAllMember.count();
//数据集
QBarSet *setLearnProcess= new QBarSet("学习进度");
setLearnProcess->setColor("green");
double sum=0;
for(int i=0;i<count;i++)
{
QString sql=QString("select * from sys_user where username='%1'").arg(login_group->listAllMember.at(i)); //查找数据库
//创建执行语句对象
QSqlQuery query;
query.exec(sql);
//判断执行结果
if(query.next())
{
QString currenttask = query.value("currenttask").toString();
sql= QString("SELECT * FROM sys_task where task_name='%1'").arg(currenttask);
//qDebug()<<sql;
query.exec(sql);
if(query.next())
{
int currentTaskIndex= query.value("id").toString().toInt();
int pecent= currentTaskIndex*100/global_task_count;
setLearnProcess->append(pecent); //数据集追加 项
sum+=pecent;
}
}else{
qDebug()<<"no records found ";
}
}
setLearnProcess->append(sum/count);
//序列
QBarSeries *series = new QBarSeries;
series->append(setLearnProcess);
chart->addSeries(series);
//坐标轴
QStringList categories;
for(int i=0;i<count;i++)
{
categories<<login_group->listAllMember.at(i);
}
categories<<"平均";
QBarCategoryAxis *axisX = new QBarCategoryAxis;
axisX->setCategories(categories);
chart->setAxisX(axisX,series);
QValueAxis *axisY = new QValueAxis;
axisY->setRange(0,100);
axisY->setTitleText("百分比");
chart->setAxisY(axisY,series);
chart->legend()->setAlignment(Qt::AlignBottom);
}
void MainForm::init_learnProcess_chart()
{
QChart *chart = new QChart();
chart->setTitle("学习进度展示");
chart->setAnimationOptions(QChart::SeriesAnimations);
ui->chartViewLearnProcess->setChart(chart);
ui->chartViewLearnProcess->setRenderHint(QPainter::Antialiasing);
}
void MainForm::build_learnProcess_chart()
{
QChart *chart = ui->chartViewLearnProcess->chart();
chart->removeAllSeries();
if(chart->axisX() != NULL)
chart->removeAxis(chart->axisX());
if(chart->axisY() != NULL)
chart->removeAxis(chart->axisY());
int count=login_group->listAllMember.count();
//数据集
QBarSet *setLearnProcess= new QBarSet("学习进度");
setLearnProcess->setColor("green");
double sum=0;
for(int i=0;i<count;i++)
{
QString sql=QString("select * from sys_user where username='%1'").arg(login_group->listAllMember.at(i));
//创建执行语句对象
QSqlQuery query;
query.exec(sql);
//判断执行结果
if(query.next())
{
QString currenttask = query.value("currenttask").toString();
sql= QString("SELECT * FROM sys_task where task_name='%1'").arg(currenttask);
//qDebug()<<sql;
query.exec(sql);
if(query.next())
{
int currentTaskIndex= query.value("id").toString().toInt();
int pecent= currentTaskIndex*100/global_task_count;
setLearnProcess->append(pecent);
sum+=pecent;
}
}else{
qDebug()<<"no records found ";
}
}
setLearnProcess->append(sum/count);
//序列
QBarSeries *series = new QBarSeries;
series->append(setLearnProcess);
chart->addSeries(series);
//坐标轴
QStringList categories;
for(int i=0;i<count;i++)
{
categories<<login_group->listAllMember.at(i);
}
categories<<"平均";
QBarCategoryAxis *axisX = new QBarCategoryAxis;
axisX->setCategories(categories);
chart->setAxisX(axisX,series);
QValueAxis *axisY = new QValueAxis;
axisY->setRange(0,100);
axisY->setTitleText("百分比");
chart->setAxisY(axisY,series);
chart->legend()->setAlignment(Qt::AlignBottom);
}
展示效果: