各位大佬,请问以下是我重写QSqlQueryModel后,做更新某个字段时,发现
数据库的数据已经更新,但表格
QTableView仍未更新,以上代码有什么
问题吗?
- bool CustomDbModel::setData(const QModelIndex &index, const QVariant &value, int role)
 - {
 - QModelIndex id0 = QSqlQueryModelindex(index.row(), 0);//第0列
 - QModelIndex id1 = QSqlQueryModelindex(index.row(), 1);//第1列
 - QModelIndex id2 = QSqlQueryModelindex(index.row(), 2);//第2列
 - STD st = m_infoList.at(index.row());
 - if(index.isValid())
 - {
 -     switch (role)
 -     {
 -     case Qt::TextAlignmentRole:
 -         return Qt::AlignVCenter | Qt::AlignHCenter;
 -     case Qt::EditRole:
 -         if(index.column() == 3)
 -         {
 -             QString strID = data(id0, Qt::DisplayRole).toString();
 -             QString strName = data(id1, Qt::DisplayRole).toString();
 -             QString strSex = data(id2, Qt::DisplayRole).toString();
 -             QSqlQuery query;
 -             query.prepare("update sthudent set score = :score where id = :id and name = :name and sex = :sex;");
 -             query.bindValue(":score", value.toString());
 -             query.bindValue(":id", strMModel);
 -             query.bindValue(":name", strName);
 -             query.bindValue(":sex", strSex);
 -             bool isOk = query.exec();
 -             qWarning()<<"isOk ="<<isOk; //isok打印是ture,数据库更新成功
 -             if(isOk)
 -             {
 -                 st.score= value.toString();//更新表格数据
 -                 m_infoList.replace(index.row(), st);
 -                 emit dataChanged(index, index);
 -                 refrushModel();//刷新模型
 -             }
 -             return isOk;
 -         }
 -         break;
 -     default:
 -         break;
 -     }
 -     return false;
 - }
 - return false;
 - }
 - void CustomDbModel::refrushModel()
 - {
 - beginResetModel();
 - endResetModel();
 - }
 
各位大佬,我
调试和测试很久,未找到原因。明明那个query.exec();返回true,并且数据库也同步更新了,也重新刷新模型了,可QTableView仍然
没有同步
显示数据,除非重新启动整个应用程序。麻烦各位大佬有空的指点一下,小弟在此不胜感激!