在 C++ 代码中添加复选框到表头的时候,我们需要先设置一个 QWidget 作为表头的容器,然后将复选框作为 QWidget 的子控件加入到QWidget 中,最后将 QWidget 设置为QTableView 的表头。
我们可以这样来实现:
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QCheckBox>
#include <QHeaderView>
#include <QStandardItemModel>
#include <QTableView>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建QTableView表格视图
QTableView tableView;
// 设置模型数据
QStandardItemModel model(4, 2);
model.setHorizontalHeaderLabels(QStringList() << "姓名" << "年龄");
for(int row = 0; row < 4; ++row) {
for(int col = 0; col < 2; ++col) {
QStandardItem *item = new QStandardItem(QString("(%1, %2)").arg(row).arg(col));
model.setItem(row, col, item);
}
}
tableView.setModel(&model);
// 设置列宽适应内容
tableView.horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
// 在表头容器里面添加复选框
QWidget* headerWidget = new QWidget();
QHBoxLayout* layout = new QHBoxLayout(headerWidget);
QCheckBox* checkBox = new QCheckBox("全选", headerWidget);
layout->addWidget(checkBox);
layout->addStretch();
tableView.setHorizontalHeader(headerWidget);
QObject::connect(checkBox, &QCheckBox::stateChanged, [&]() {
for(int row = 0; row < model.rowCount(); ++row) {
QModelIndex index = model.index(row, 0);
model.setData(index, checkBox->checkState(), Qt::CheckStateRole);
}
});
tableView.show();
return app.exec();
}
通过以上代码,我们就可以在 Qt 的 C++ 应用程序中实现QTableView表头添加复选框。
本文福利, 免费领取C++学习资料包、技术视频/代码,内容包括(C++基础,网络编程,数据库,中间件,后端开发,音视频开发,Qt开发)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓