一、问题描述:
设置表格控件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);
}
}
}