qt c++ tableWidget 获取行,列单元格QCheckBox
时间: 2023-12-29 15:05:08 浏览: 82
QTableWidget实现行选、列选
4星 · 用户满意度95%
可以通过以下代码获取QTableWidget中QCheckBox的状态:
1. 获取单元格中QCheckBox的状态:
```cpp
// tableWidget为QTableWidget对象,row和column为单元格的行列号
QWidget *cell = tableWidget->cellWidget(row, column);
if (cell && cell->inherits("QCheckBox")) {
QCheckBox *checkBox = qobject_cast<QCheckBox*>(cell);
if (checkBox) {
bool is_checked = checkBox->isChecked();
}
}
```
2. 获取一行中所有QCheckBox的状态:
```cpp
// tableWidget为QTableWidget对象,row为行号
QList<bool> checked_list;
for (int column = 0; column < tableWidget->columnCount(); column++) {
QWidget *cell = tableWidget->cellWidget(row, column);
if (cell && cell->inherits("QCheckBox")) {
QCheckBox *checkBox = qobject_cast<QCheckBox*>(cell);
if (checkBox) {
bool is_checked = checkBox->isChecked();
checked_list.append(is_checked);
}
}
}
```
3. 获取一列中所有QCheckBox的状态:
```cpp
// tableWidget为QTableWidget对象,column为列号
QList<bool> checked_list;
for (int row = 0; row < tableWidget->rowCount(); row++) {
QWidget *cell = tableWidget->cellWidget(row, column);
if (cell && cell->inherits("QCheckBox")) {
QCheckBox *checkBox = qobject_cast<QCheckBox*>(cell);
if (checkBox) {
bool is_checked = checkBox->isChecked();
checked_list.append(is_checked);
}
}
}
```
注意:以上代码中,需要先判断单元格中是否有QCheckBox控件,否则可能会出现空指针错误。还需要注意checkBox的指针是否成功转换,否则可能会出现转换失败的问题。
阅读全文