最近在用QTableView+QSqlTableModel+QSortFilterProxyModel写一个表格:
MySqlTableModel *sourceModel = new MySqlTableModel;
MySortFilterProxyModel *proxyModel = new MySortFilterProxyModel;
MyTableView *view = new MyTableView;
proxyModel->setSourceModel(sourceModel);
view->setModel(proxyModel);
解决方案:在类MySortFilterProxyModel中重载函数setData():
MySqlTableModel *model = static_cast<MySqlTableModel *>(this->sourceModel());
if(model){
QModelIndex tmp = this->mapToSource(index);
//重要,model->index()
return model->setData(model->index(tmp.row(),tmp.column()), value, role);
}
return QSortFilterProxyModel::setData(index, value, role);