QTableWidgetItem + QTableWidget 基本用法获取和设置数据

获得当前单元格数据

当鼠标在表格上单击单元格时,被选中的单元格是当前单元格。通过 QTableWidget 的 currentColumn() 和 currentRow() 可以获得当前单元格的列编号和行编号。

当前单元格发生切换时,会发射 currentCellChanged() 信号和 currentItemChanged() 信号,两个信号都可以利用,只是传递的参数不同。

对 currentCellChanged() 信号编写槽函数,用于获取当前单元格的数据,以及当前行的学生的学号信息,代码如下:

 
  1. void MainWindow::on_tableInfo_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
  2. {//当前选择单元格发生变化时的响应
  3. Q_UNUSED(previousRow);
  4. Q_UNUSED(previousColumn);
  5.  
  6. QTableWidgetItem* item=ui->tableInfo->item(currentRow,currentColumn); //获取单元格的 Item
  7. if (item==NULL)
  8. return;
  9.  
  10. item->setText(QString::asprintf("当前单元格坐标:%d 行,%d 列",currentRow,currentColumn));
  11.  
  12. int cellType=item->type();//获取单元格的类型
  13. labCellType->setText(QString::asprintf("当前单元格类型:%d",cellType));
  14.  
  15. item=ui->tableInfo->item(currentRow,MainWindow::colName); //取当前行第1列的单元格的 item
  16. int ID=item->data(Qt::UserRole).toInt();//读取用户自定义数据
  17. labStudID->setText(QString::asprintf("学生ID:%d",ID));//学生ID
  18. }

在 currentCellChanged() 信号中,传递的参数 currentRow 和 currentColumn 表示当前单元格的行号和列号,通过这两个编号可以得到单元格的 QTableWidgetltem 对象 item。

获得 item 之后,通过 type() 函数得到单元格的类型参数,这个类型就是为单元格创建 QTableWidgetItem 对象时传递的类型参数。

再获取同一行的“姓名”单元格的项,用data()函数提取自定义数据,也就是创建单元格时存储的学生 ID。

猜你喜欢

转载自blog.csdn.net/jiesunliu3215/article/details/108833589