class MyModel : public QSqlQueryModel {
Q_OBJECT
public:
MyModel(QObject *parent = 0);
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
........
};
Qt::ItemFlags MyModel::flags(const QModelIndex &index) const {
Qt::ItemFlags flags = QSqlQueryModel::flags(index);
if (index.column() == aColWithCheckbox)
flags |= Qt::ItemIsUserCheckable;
else
flags |= Qt::ItemIsEditable;
return flags;
}
QVariant MyModel::data(const QModelIndex &index, int role) const {
QVariant value = QSqlQueryModel::data(index, role);
if (role == Qt::CheckStateRole && index.column() == aColWithCheckbox)
return (QSqlQueryModel::data(index).toInt() != 0) ? Qt::Checked : Qt::Unchecked;
else
return value;
}
bool MyModel::setData( const QModelIndex & index, const QVariant & value, int role)
{
if(index.isValid() && role == Qt::CheckStateRole&&index.column()==0)
{
if(value.value<int>()==Qt::Checked)
{
m_config->setAutoRun(index.row(), true);
}
else
{
m_config->setAutoRun(index.row(), false);
}
emit dataChanged(index, index);
return true;
}
return false;
}
本文介绍了一种在Qt模型视图中自定义检查列的方法,通过重写Qt::ItemFlags和QVariant来实现在编辑模式下进行Check/Uncheck操作。
2292

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



