获得当前单元格数据
当鼠标在表格上单击单元格时,被选中的单元格是当前单元格。通过 QTableWidget 的 currentColumn() 和 currentRow() 可以获得当前单元格的列编号和行编号。
当前单元格发生切换时,会发射 currentCellChanged() 信号和 currentItemChanged() 信号,两个信号都可以利用,只是传递的参数不同。
对 currentCellChanged() 信号编写槽函数,用于获取当前单元格的数据,以及当前行的学生的学号信息,代码如下:
- void MainWindow::on_tableInfo_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
- {//当前选择单元格发生变化时的响应
- Q_UNUSED(previousRow);
- Q_UNUSED(previousColumn);
- QTableWidgetItem* item=ui->tableInfo->item(currentRow,currentColumn); //获取单元格的 Item
- if (item==NULL)
- return;
- item->setText(QString::asprintf("当前单元格坐标:%d 行,%d 列",currentRow,currentColumn));
- int cellType=item->type();//获取单元格的类型
- labCellType->setText(QString::asprintf("当前单元格类型:%d",cellType));
- item=ui->tableInfo->item(currentRow,MainWindow::colName); //取当前行第1列的单元格的 item
- int ID=item->data(Qt::UserRole).toInt();//读取用户自定义数据
- labStudID->setText(QString::asprintf("学生ID:%d",ID));//学生ID
- }
在 currentCellChanged() 信号中,传递的参数 currentRow 和 currentColumn 表示当前单元格的行号和列号,通过这两个编号可以得到单元格的 QTableWidgetltem 对象 item。
获得 item 之后,通过 type() 函数得到单元格的类型参数,这个类型就是为单元格创建 QTableWidgetItem 对象时传递的类型参数。
再获取同一行的“姓名”单元格的项,用data()函数提取自定义数据,也就是创建单元格时存储的学生 ID。