解决QSqlTableModel::setData()崩溃的问题

最近在用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);

你可能感兴趣的:(Crash,setData,崩溃,QSqlTableModel)