• 1996阅读
  • 0回复

QML的gridview视图怎么修改qsqltablemodel数据模型中的数据更新到mysql数据库中 [复制链接]

上一主题 下一主题
离线simomli
 

只看楼主 倒序阅读 楼主  发表于: 2020-01-14
QML里面用的是gridview作为视图,QSqltablemodel作为模型,数据用mysql。当在视图上修改了数据后,怎么设置到mysql?
已经重新实现了 rolenames 及 setdata 函数,比如:现在需要修改其中一个roles的值,在qml中,直接给对应的roles赋值,但是没写成功。
所以请问:在QML里面,怎么对模型数据的修改更新到mysql数据库中?

  1. setEditStrategy(QSqlTableModel::OnFieldChange);
  2. QHash<int, QByteArray> ftsqltablemodel::roleNames() const{
  3.     QHash<int, QByteArray> roles;
  4.     for (int i = 0; i < this->record().count(); i ++) {
  5.        roles.insert(Qt::UserRole + i + 1, record().fieldName(i).toUtf8());
  6.        qDebug() << "roles:" << record().fieldName(i).toUtf8();
  7.     }
  8.     return roles;
  9. }
  10. bool ftsqltablemodel::setData(const QModelIndex &index, const QVariant &value, int role){
  11.     bool ret = false;
  12.     if (index.isValid()) {
  13.         if (role < Qt::UserRole) {
  14.             QSqlTableModel::setData(index, value,role);
  15.             ret = true;
  16.         } else {
  17.             int columnIdx = role - Qt::UserRole - 1;
  18.             QModelIndex modelIndex = this->index(index.row(), columnIdx);
  19.             if(QSqlTableModel::setData(modelIndex, value,role))
  20.             {
  21.                 qDebug()<< "edit " << modelIndex.row() << modelIndex.column() << value;
  22.                 ret = true;
  23.             }
  24.             else{
  25.                 qDebug()<< "edit failed " << modelIndex.row() << modelIndex.column() << value;
  26.             }
  27.         }
  28.     }
  29.     qDebug()<<"555555" << index.row() << index.column() << value << role;
  30.     return ret;
  31. }


QML
  1. MouseArea{
  2.     anchors.fill:parent
  3.     onClicked:{
  4.         model.MinCellVoltage = 4.2
  5.     }
  6. }

快速回复
限100 字节
 
上一个 下一个