c++ qtablewidget里勾选框,选中获取单元格数据
时间: 2024-03-09 13:49:45 浏览: 132
要在QTableWidget中添加勾选框可以使用QCheckBox控件,并将其放置在单元格中。可以使用`QTableWidget::setCellWidget()`方法将QCheckBox添加到QTableWidget中的单元格中。例如,可以使用以下代码将QCheckBox添加到第一行第一列的单元格中:
```c++
QCheckBox *checkBox = new QCheckBox();
ui->tableWidget->setCellWidget(0, 0, checkBox);
```
要获取选中的单元格数据,可以连接QCheckBox的stateChanged信号到一个槽函数中。在槽函数中,可以使用sender()方法获取发出信号的QCheckBox,然后使用`QTableWidget::indexAt()`方法获取其所在的行和列。最后,可以使用`QTableWidget::item()`方法获取该单元格中的数据。例如,可以使用以下代码获取第一行第一列单元格中的数据:
```c++
connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(onStateChanged(int)));
void MyClass::onStateChanged(int state)
{
QCheckBox* checkBox = qobject_cast<QCheckBox*>(sender());
if(checkBox)
{
int row = ui->tableWidget->row(checkBox);
int column = ui->tableWidget->column(checkBox);
if(checkBox->isChecked())
{
QTableWidgetItem* item = ui->tableWidget->item(row, column);
if(item)
{
QString data = item->data(Qt::DisplayRole).toString();
qDebug() << data;
}
}
}
}
```
在上述代码中,我们首先获取发出信号的QCheckBox,并使用`QTableWidget::row()`和`QTableWidget::column()`方法获取其所在的行和列。然后,如果QCheckBox被选中,我们使用`QTableWidget::item()`方法获取该单元格中的数据,并使用`QTableWidgetItem::data()`方法获取其显示的数据。如果要获取其他单元格的数据,只需将row和column的值替换为所需单元格的行和列即可。
阅读全文