QTabWidget 的使用小记

http://blog.csdn.net/leftover_crazy/article/details/5777890

实例化QTabWidget 后需要做如下设置

[cpp]  view plain copy print ?
  1. QStringList headers;//存放列标题QSting组  
  2. headers<<"产品名称(加工方式)"<<"产品型号"<<"产品规格"<<"加工备注"<<"产品单位"<<"产品单价"<<"产品数量"<<"金额";  
  3. ui->tableWidget->setColumnCount(8);//设置列数  
  4. ui->tableWidget->setRowCount(0);//设置行数  
  5. ui->tableWidget->setHorizontalHeaderLabels(headers);//设置列标题  
  6. ui->tableWidget->resizeColumnsToContents();//这个非必需,作用是将所有列根据列的数据宽度,标题宽度重新设置大小,可以防止显示不完整  

接着下来是常用的表格操作

插入行操作

[cpp]  view plain copy print ?
  1. int row=ui->tableWidget->rowCount();//获取当前行数  
  2. //  
  3. //int column=ui->tableWidget->columnCount();//获取当前表格的列数  
  4.             ui->tableWidget->insertRow(row);//在表格最后插入一行  
  5. //以下是分别设置该行各列的数据  
  6. //setItem的参数从左到有分别是行号,列号,Item数据(无法直接使用QString)必需采用如下格式new QTableWidgetItem(ui->comboBox_8->currentText())  
  7. //这里必须注意的是表格的行和列号都是从0开始计算的  
  8.             ui->tableWidget->setItem(row,0,new QTableWidgetItem(ui->comboBox_8->currentText()));  
  9.             ui->tableWidget->setItem(row,1,new QTableWidgetItem(ui->lineEdit_5->text().trimmed()));  
  10.             ui->tableWidget->setItem(row,2,new QTableWidgetItem(ui->comboBox_9->currentText()));  
  11.             ui->tableWidget->setItem(row,3,new QTableWidgetItem(tr("")));  
  12.             ui->tableWidget->setItem(row,4,new QTableWidgetItem(ui->comboBox_10->currentText()));  
  13.             ui->tableWidget->setItem(row,5,new QTableWidgetItem(ui->lineEdit_9->text().trimmed()));  
  14.             ui->tableWidget->setItem(row,6,new QTableWidgetItem(ui->lineEdit_10->text().trimmed()));  
  15.             ui->tableWidget->setItem(row,7,new QTableWidgetItem(ui->lineEdit_11->text().trimmed()));  

获取表格内的某个item数据

[c-sharp]  view plain copy print ?
  1. currentrow=ui->tableWidget->currentIndex().row();//获取当前选中的行号  
  2. currentcolumn=ui->tableWidget->currentIndex().column();//获取当前选中的列号  
  3. //也可以使用如下代码  
  4. currentrow=ui->tableWidget->currentRow();//行号  
  5. currentcolumn=ui->tableWidget->currentColumn();//列号  
  6.   
  7. QString Itemstring=ui->tableWidget->item(currentrow,1)->text();  

然后就可以使用setitem进行数据修改

删除某一列 或者删除某一行

[cpp]  view plain copy print ?
  1. ui->tableWidget->removeRow(currentrow);//删除currentrow行  
  2. ui->tableWidget->removeColumn(x);//删除x列  

QTabWidget 使用的时候如果读取的数据不存在     或者读取的数据项在setitem的时候没有写入数据,则程序会崩溃

比如:

[c-sharp]  view plain copy print ?
  1. //ui->tableWidget->setItem(row,0,new QTableWidgetItem(tr("***")+ui->comboBox_6->currentText().trimmed()+tr("***")+ui->tableWidget->item(currentrow,0)->text()));  
  2.         ui->tableWidget->setItem(row,1,new QTableWidgetItem(ui->tableWidget->item(currentrow,1)->text()));  
  3.         ui->tableWidget->setItem(row,2,new QTableWidgetItem(ui->comboBox_7->currentText()));  
  4.         ui->tableWidget->setItem(row,3,new QTableWidgetItem(ui->lineEdit_13->text().trimmed()));  
  5.         ui->tableWidget->setItem(row,4,new QTableWidgetItem(ui->comboBox_11->currentText()));  
  6.         ui->tableWidget->setItem(row,5,new QTableWidgetItem(ui->lineEdit_15->text().trimmed()));  
  7.         ui->tableWidget->setItem(row,6,new QTableWidgetItem(ui->lineEdit_4->text().trimmed()));  
  8.         ui->tableWidget->setItem(row,7,new QTableWidgetItem(ui->lineEdit_19->text().trimmed()));  
  9.         ui->tableWidget->setItem(row,8,new QTableWidgetItem(ui->lineEdit_12->text().trimmed()));  

这里我们将某一行的第一列数据的setitem函数注释掉

在添加数据的时候index指向的数据项将为空,但是这里的为空并非想象中的空字符串""

当我们读取数据的时候

[c-sharp]  view plain copy print ?
  1. ui->lineEdit_19->setText(ui->tableWidget->item(currentrow,0)->text());  

此时程序编译链接正常通过,但是程序运行时将会导致调用栈出错,找不到该index指向的数据的地址


你可能感兴趣的:(QT转载博文)