本人小白,此文只用于笔记与给予跟我一样的小白们一些帮助!
网上有很多版本,但是大部分的版本都不能实现用QSqlQueryModel导入model的情况下实现QCheckBox,因为大部分的版本会让第一列的QCheckBox无法被选择,经过多方的资料收集,得出可行的版本:
TableModel.h
#include <QtGui>
#include <QApplication>
#include <QSqlQueryModel>
#include <QMap>
class TableModel : public QSqlQueryModel
{
public:
bool setData(const QModelIndex &, const QVariant &, int);
QVariant data(const QModelIndex &, int) const;
Qt::ItemFlags flags(const QModelIndex &) const;
QMap<int, Qt::CheckState> check_state_map;
};
TableModel.cpp
#include "TableModel.h"
bool TableModel::setData( const QModelIndex &index, const QVariant &value, int role )
{
if(!index.isValid())
return false;
if (role == Qt::CheckStateRole && index.column() == 0)
{
check_state_map[index.row()] = (value == Qt::Checked ? Qt::Checked : Qt::Unchecked);