QT 如何解决表格内容设置居中,出现程序异常死掉的问题?

一、问题描述:

设置表格控件QT tableWidget中的内容居中显示时,运行程序出现“程序异常结束”的问题。而且有的时候,运行又会成功,出现时好时坏的情况。

二、问题原因分析

QT tableWidget 控件,可以自己初始化表格的行数和列数,但是却没有提供直接对表格所有item内容设置居中的方法。所以,我们只能通过两层for循环分别对表格中每个item的内容进行居中设置。当我们的表格中的某个item没有值的时候,就会出现程序异常的情况。因为,你表格中某个item没有值,循环就无法继续进行,导致程序停止正常工作。

综上,出现问题的根本原因是,在建立表格并设置行列等信息之后,没有对表格的没有item进行初始化。

三、设置表格内容居中

  • 对表格进行初始化
//初始设置表格为五行六列
ui->tableWidget->setRowCount(    5);
ui->tableWidget->setColumnCount(6);
        
//设置列宽
    for(int j=0;j<6;j++){
        if(j%2==0)
         ui->tableWidget->setColumnWidth(j,68);
        if(j%2!=0)
          ui->tableWidget->setColumnWidth(j,60);
    }

//设置行高
    for(int i=0;i<5;i++){
        ui->tableWidget->setRowHeight(i,20);
    }
  • 给表格每个item的内容设置初始值
/将表格中的值初始化为空,方便设置内容居中时做条件判断
    for(int i=0;i<5;i++){
        for(int j=0;j<6;j++){
            ui->tableWidget->setItem(i,j,new QTableWidgetItem(tr("")));
        }
    }
  • 设置居中
//将表格中的内容居中显示
    for( int i = 0;i<5;i++){
        for(int j=0;j<7;j++){
            //如果内容不为空,就设置其内容居中
            if(ui->tableWidget->item(i,j)->text()!=""){
               ui->tableWidget->item(i,j)->setTextAlignment(Qt::AlignCenter);
            }
       }
    }

猜你喜欢

转载自blog.csdn.net/Jungle_Rao/article/details/89316226
今日推荐