使用QTableView单元格编辑功能时,遇到了以下问题:
重载Qt::ItemFlags flag(const QModelIndex & index) const函数,来指定单元格属性为可编辑状态,
Qt::ItemFlags dataModel::flags(const QModelIndex& index) const { return Qt::ItemIsEditable | QAbstractTableModel::flags(index); }
结果为,双击可编辑,但单元格内容置空,未修改退出编辑状态,内容变为0。
应该这样修改,即可双击单元格进入编辑状态,内容处于被选中状态,
QVariant dataModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (role == Qt::TextAlignmentRole) { return int(Qt::AlignRight | Qt::AlignVCenter); } else if (role == Qt::DisplayRole || role == Qt::EditRole) //就是这个地方 { switch ( index.column() ) { //to do ... } } return QVariant(); }