在 C++ 代码中添加复选框到表头

在 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开发)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值