QT 实现图表显示--QChart

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);
}

展示效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chilian12321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值