Qt中QTableView中加入Check列实现(…

这篇博客介绍了如何在Qt的QTableView组件中添加带有复选框的列。通过自定义StudentInfoModel类继承自QAbstractTableModel,实现了数据模型,并在data()和flags()方法中处理复选状态。当复选框状态改变时,会触发信号StudentInfoIsChecked发送学生信息。
摘要由CSDN通过智能技术生成
QTableView中嵌入复选框CheckBox
设置QAbstractTableModel的flags()函数法
        通过Delegate创建QCheckBox来实现的Check列,只有在该列进入编辑模式时才能够Check/Uncheck。这显然不是我们想要的,网上翻来翻去,在一个国外论坛中看到了无需Delegate的实现方法,只需重写Model即可:

主要是修改两个函数:
//设置某一列为可选角色,绘画出QCheckBox
Qt::ItemFlags flags(const QModelIndex &index) const; 
//根据界面选择QCheckbox,修改Model中的数据
  bool setData(const QModelIndex &index, const QVariant &value, int role);

Cpp代码    
  1. 2.在StudentInfoModel .h头文件中的主要代码:  
  2. class StudentInfoModel public QAbstractTableModel   
  3.  
  4.     Q_OBJECT  
  5. public 
  6.     StudentInfoModel(const int totalColumn, const int aColumnNumWithChechBox 0, QObject *parent 0)  
  7.     :totalColumn(totalColumn),colNumberWithCheckBox(aColumnNumWithChechBox),  
  8.       
  9.     QAbstractTableModel(parent) {rowCheckStateMap.clear();};  
  10. public 
  11.     int rowCount(const QModelIndex &parent QModelIndex()) const 
  12.     int columnCount(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值