接​​QT MVC模型​​,通过实现QAbstractTableModel产生的表格,发现无法在编辑时选中原数据,而QTableWidget可以选中后编辑:

      编辑时不可选中:                                              编辑时可选中:

          

QT MVC模型(二)_QT

                             

QT MVC模型(二)_QTableView可编辑_02

 

      通过上述对比发现,在编辑状态时,数据变空了,所以没有任何数据选中,那是因为在Qt::EditRole时,没有设置此时单元格的值.

      

QVariant HistoryModel::data(const QModelIndex &index, int role) const
{
if(!index.isValid())
return QVariant();
/**
* 此处添加当Qt::EditRole时,为单元格赋值; 即可在编辑时,原数据承选中状态,这样便于对比
*/
if(role==Qt::DisplayRole||role==Qt::EditRole)
{
int offset=index.row()*horizontalList.size()+index.column(); // 设置单元格数据
return hisdatas[offset];
}else if(role==Qt::TextAlignmentRole)
{
return int(Qt::AlignHCenter|Qt::AlignVCenter); // 设置单元格对齐方式
}

return QVariant();
}