qt用C++表格勾选checkbox获取行信息
时间: 2023-06-13 14:09:00 浏览: 59
你可以使用Qt的QTableWidget控件和QCheckBox控件来实现该功能。具体步骤如下:
1. 在QTableWidget中添加需要勾选的行和列;
2. 将每一行的第一列设置为QCheckBox控件,即将QCheckBox控件添加到QTableWidget的单元格中;
3. 为每个QCheckBox添加一个信号槽函数,当勾选或取消勾选时触发;
4. 在信号槽函数中获取勾选的行信息,可以使用QTableWidgetItem的text()函数获取行中其他列的信息。
下面是一个简单的例子,实现了获取勾选行信息的功能:
```cpp
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableWidget tableWidget;
tableWidget.setColumnCount(3);
tableWidget.setRowCount(5);
// 添加QCheckBox控件到第一列
for(int i = 0; i < 5; ++i) {
QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
checkBoxItem->setCheckState(Qt::Unchecked);
tableWidget.setItem(i, 0, checkBoxItem);
}
// 添加其他列的数据
for(int row = 0; row < 5; ++row) {
for(int col = 1; col < 3; ++col) {
QTableWidgetItem *item = new QTableWidgetItem(QString("row %1, col %2").arg(row).arg(col));
tableWidget.setItem(row, col, item);
}
}
// 连接信号槽函数
QObject::connect(&tableWidget, &QTableWidget::cellChanged, [&tableWidget](int row, int col) {
if(col == 0) { // 第一列为QCheckBox
QTableWidgetItem *checkBoxItem = tableWidget.item(row, 0);
if(checkBoxItem->checkState() == Qt::Checked) {
QString rowData;
for(int i = 1; i < tableWidget.columnCount(); ++i) { // 获取勾选行的信息
QTableWidgetItem *item = tableWidget.item(row, i);
rowData += item->text() + " ";
}
qDebug() << "Row " << row << " checked, data: " << rowData;
}
}
});
tableWidget.show();
return a.exec();
}
```
运行程序后,勾选某一行的QCheckBox,会在控制台输出该行的信息。