QT 绘制表格以及内容的居中显示

项目中第一次用到表格的绘制的功能,实现表格的行列的绘制以及表格中字符串的居中显示,先看下显示的效果!

          

#include<QStandardItemModel>
#include<QTableView>

DistanceAnalysisDialog.cpp

void DistanceAnalysisDialog::drawTable(void)
{
    //存储的累计次数
    int QX_numZeroToPointTwo=0;
    int QX_numPointTwoToPointFive=0;
    int QX_numPointFiveToPointEight=0;
    int QX_numPointEightToOne=0;
    int QX_greaterThanOne=0;
    int LF_numZeroToPointTwo=0;
    int LF_numPointTwoToPointFive=0;
    int LF_numPointFiveToPointEight=0;
    int LF_numPointEightToOne=0;
    int LF_greaterThanOne=0;
    int QX_salution=0;
    int LF_salution=0;
    //存储的是百分之占比
    double QX_numZeroToPointTwoNum=0.0;
    double QX_numPointTwoToPointFiveNum=0.0;
    double QX_numPointFiveToPointEightNum=0.0;
    double QX_numPointEightToOneNum=0.0;
    double QX_greaterThanOneNum=0.0;
    double LF_numZeroToPointTwoNum=0.0;
    double LF_numPointTwoToPointFiveNum=0.0;
    double LF_numPointFiveToPointEightNum=0.0;
    double LF_numPointEightToOneNum=0.0;
    double LF_greaterThanOneNum=0.0;
    double QX_numSalution=0.0;
    double LF_numSalution=0.0;
   //表格头的创建及显示内容输入
    QStandardItemModel *model = new QStandardItemModel(2,7);
    model->setHeaderData(0,Qt::Horizontal,QStringLiteral("基站名称"));
    model->setHeaderData(1,Qt::Horizontal,QStringLiteral("0~0.2"));
    model->setHeaderData(2,Qt::Horizontal,QStringLiteral("0.2~0.5"));
    model->setHeaderData(3,Qt::Horizontal,QStringLiteral("0.5~0.8"));
    model->setHeaderData(4,Qt::Horizontal,QStringLiteral("0.8~1"));
    model->setHeaderData(5,Qt::Horizontal,QStringLiteral(">1"));
    model->setHeaderData(6,Qt::Horizontal,QStringLiteral("固定解占比"));
    for (int i=0;i<ENU->horizontalErrorListOne.length();i++)
    {
        double num= ENU->horizontalErrorListOne.at(i);
        if(0<num&&num<=0.2)
        {
            QX_numZeroToPointTwo++;
        }
        else if(0.2<num&&num<=0.5)
        {
            QX_numPointTwoToPointFive++;
        }
        else if(0.5<num&&num<=0.8)
        {
            QX_numPointFiveToPointEight++;
        }
        else if(0.8<num&&num<=1)
        {
            QX_numPointEightToOne++;
        }
        else if(num>1)
        {
            QX_greaterThanOne++;
        }
    }
    for (int i=0;i<ENU->horizontalErrorListTwo.length();i++)
    {
        double num= ENU->horizontalErrorListTwo.at(i);
        if(0<num&&num<=0.2)
        {
            LF_numZeroToPointTwo++;
        }
        else if(0.2<num&&num<=0.5)
        {
            LF_numPointTwoToPointFive++;
        }
        else if(0.5<num&&num<=0.8)
        {
            LF_numPointFiveToPointEight++;
        }
        else if(0.8<num&&num<1)
        {
            LF_numPointEightToOne++;
        }
        else if(1<num)
        {
            LF_greaterThanOne++;
        }
    }
    for(int i=0;i<fileOperation->sceneFileList1->length();i++)
    {
        QString salution= fileOperation->sceneFileList1->at(i).solutionState;
        if(salution=="4")
        {
            QX_salution++;
        }
    }
    for(int i=0;i<fileOperation->sceneFileList->length();i++)
    {
        QString salution= fileOperation->sceneFileList->at(i).solutionState;
        if(salution=="4")
        {
            LF_salution++;
        }
    }
    QX_numZeroToPointTwoNum= (static_cast<double>(QX_numZeroToPointTwo)/(ENU->horizontalErrorListOne.length()))*100;
    QX_numPointTwoToPointFiveNum=(static_cast<double>(QX_numPointTwoToPointFive)/ENU->horizontalErrorListOne.length())*100;
    QX_numPointFiveToPointEightNum= (static_cast<double>(QX_numPointFiveToPointEight)/ENU->horizontalErrorListOne.length())*100;
    QX_numPointEightToOneNum=(static_cast<double>(QX_numPointEightToOne)/ENU->horizontalErrorListOne.length())*100;
    QX_greaterThanOneNum= (static_cast<double>(QX_greaterThanOne)/ENU->horizontalErrorListOne.length())*100;
    LF_numZeroToPointTwoNum=(static_cast<double>(LF_numZeroToPointTwo)/ENU->horizontalErrorListTwo.length())*100;
    LF_numPointTwoToPointFiveNum=(static_cast<double>(LF_numPointTwoToPointFive)/ENU->horizontalErrorListTwo.length())*100;
    LF_numPointFiveToPointEightNum=(static_cast<double>(LF_numPointFiveToPointEight)/ENU->horizontalErrorListTwo.length())*100;
    LF_numPointEightToOneNum=(static_cast<double>(LF_numPointEightToOne)/ENU->horizontalErrorListTwo.length())*100;
    LF_greaterThanOneNum=(static_cast<double>(LF_greaterThanOne)/ENU->horizontalErrorListTwo.length())*100;
    //解状态占比
    QX_numSalution=(static_cast<double>(QX_salution)/(fileOperation->sceneFileList1->length()))*100;
    LF_numSalution=(static_cast<double>(LF_salution)/(fileOperation->sceneFileList->length()))*100;
    //表格中输入数据
    model->setData(model->index(0,0), QStringLiteral("千寻位置"));
    model->setData(model->index(0,1), QString::number(QX_numZeroToPointTwoNum,'f',2));
    model->setData(model->index(0,2), QString::number(QX_numPointTwoToPointFiveNum,'f',2));
    model->setData(model->index(0,3), QString::number(QX_numPointFiveToPointEightNum,'f',2));
    model->setData(model->index(0,4), QString::number(QX_numPointEightToOneNum,'f',2));
    model->setData(model->index(0,5), QString::number(QX_greaterThanOneNum,'f',2));
    model->setData(model->index(0,6), QString::number(QX_numSalution,'f',2));
    model->setData(model->index(1,0), QStringLiteral("六分科技"));
    model->setData(model->index(1,1), QString::number(LF_numZeroToPointTwoNum,'f',2));
    model->setData(model->index(1,2), QString::number(LF_numPointTwoToPointFiveNum,'f',2));
    model->setData(model->index(1,3), QString::number(LF_numPointFiveToPointEightNum,'f',2));
    model->setData(model->index(1,4), QString::number(LF_numPointEightToOneNum,'f',2));
    model->setData(model->index(1,5), QString::number(LF_greaterThanOneNum,'f',2));
    model->setData(model->index(1,6), QString::number(LF_numSalution,'f',2));
    //实现表格内容的居中显示
    for(int i=0;i<2;i++)
    {
        for (int j=0;j<7;j++)
        {
             model->item(i,j)->setTextAlignment(Qt::AlignCenter);
        }
    }
ui->tableView->resizeColumnsToContents(); //根据内容调整大小
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//根据容器调整大小
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选中模式为选中行
ui->tableView->setSelectionMode( QAbstractItemView::SingleSelection); //设置选中单行
ui->tableView->setModel(model); 
}

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页