qtableview中添加复选框
时间: 2023-12-21 22:04:36 浏览: 145
要在Qt的QTableView中添加复选框,可以使用QCheckBox作为QTableView中的单元格小部件,然后将其添加到表格中的单元格中。以下是一个简单的示例:
```
// 创建一个QStandardItemModel,该模型将在QTableView中使用
QStandardItemModel *model = new QStandardItemModel();
// 构建表头
model->setHorizontalHeaderLabels(QStringList() << "Name" << "Age" << "Married");
// 添加数据行
QList<QStandardItem *> row1 = QList<QStandardItem *>() << new QStandardItem("John") << new QStandardItem("30") << new QStandardItem();
QList<QStandardItem *> row2 = QList<QStandardItem *>() << new QStandardItem("Jane") << new QStandardItem("25") << new QStandardItem();
// 创建QCheckBox小部件并将其设置为单元格的小部件
QCheckBox *marriedBox1 = new QCheckBox();
QCheckBox *marriedBox2 = new QCheckBox();
row1[2]->setCheckable(true);
row1[2]->setCheckState(Qt::Unchecked);
row1[2]->setData(QVariant::fromValue(marriedBox1), Qt::UserRole+1);
row2[2]->setCheckable(true);
row2[2]->setCheckState(Qt::Unchecked);
row2[2]->setData(QVariant::fromValue(marriedBox2), Qt::UserRole+1);
// 将数据行添加到模型中
model->appendRow(row1);
model->appendRow(row2);
// 将模型设置为QTableView的模型
QTableView *tableView = new QTableView();
tableView->setModel(model);
// 将QCheckBox小部件添加到单元格中
tableView->setIndexWidget(model->index(0, 2), marriedBox1);
tableView->setIndexWidget(model->index(1, 2), marriedBox2);
```
在上面的示例中,我们使用QStandardItemModel作为QTableView的模型,并将QCheckBox小部件添加到第三列中的单元格中。我们还将QCheckBox存储为QStandardItem的数据,以便稍后可以轻松地访问它。 最后,我们使用setIndexWidget函数将QCheckBox小部件添加到单元格中。
阅读全文