接QT MVC模型,通过实现QAbstractTableModel产生的表格,发现无法在编辑时选中原数据,而QTableWidget可以选中后编辑:
编辑时不可选中: 编辑时可选中:
通过上述对比发现,在编辑状态时,数据变空了,所以没有任何数据选中,那是因为在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();
}