我正在开发一个使用QT5.0的应用程序和QT的新应用程序。很糟糕的是,我没有太多的时间来进行长时间的学习。 我已经派生了自己的TableModel并将其设置为可编辑的TableView。 TableView显示模型的数据,它的工作原理。但是当我在tableview上激活一个单元格时,数据就会消失。我查看了文档,发现QTableView派生自QAbstractItemView类,它有一个名为'activated'的信号和一个名为'edit'的插槽。所以,我认为'激活'信号连接到'编辑'插槽。但'编辑'不是虚拟的,所以我无法覆盖它。我可以将我的子类连接到父项的“激活”信号,但实际上我不知道如何处理此信号以保存TableView对象的当前数据。 如果代码使用SqlTableModel,则没有问题。我认为它处理'激活'信号,但我不确定这些,只是猜测.. 这样做的正确方法是什么?
答案 0 :(得分:2)
检查您的数据功能:
QVariant TableModel::data(const QModelIndex &index, int role) const
if( !index.isValid() )
return QVariant();
if( role == Qt::DisplayRole || role == Qt::EditRole) {
return <your data>
}
return QVariant();
}
确保您处理EditRole
角色。