常用方法有:
1、通过QAbstractItemDelegate类添加,在createEditor()函数中new 一个QCheckBox,塞到QTableView中;
2、直接使用QTableView的Model里开关实现。
(1)重写Qt::ItemFlags flags(const QModelIndex &index) const函数;
(2)改写QVariant data(const QModelIndex &index, int role) const override函数。
(3)重写bool QTestModel::setData(const QModelIndex &index, const QVariant &value, int role)函数;
本文介绍第二种方法。QTableView本来就存在QCheckBox,默认隐藏,通过代码把它重新打开即可。适用于使用MVC方法的QTableView。
假设三个类分别为QTest,QTestView,QTestModel。
(1)QTestModel类中重写flags ,setData和data函数。
QTestModel.h中函数声明:
public:
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant data(const QModelIndex &index, int role) const override;
bool QTestModel::setData(const QModelIndex &index, const QVariant &value, int role);
private:
QMap<int, Qt::CheckState> m_rowCheckStateMap;
QTestModel.cpp中函数定义:
Qt::ItemFlags QTestModel::flags(const QModelIndex &index) const
{

最低0.47元/天 解锁文章
8985

被折叠的 条评论
为什么被折叠?



