simomli |
2020-01-14 16:05 |
QML的gridview视图怎么修改qsqltablemodel数据模型中的数据更新到mysql数据库中
在QML里面用的是gridview作为视图,QSqltablemodel作为模型,数据库用mysql。当在视图上修改了数据后,怎么设置到mysql? 已经重新实现了 rolenames 及 setdata 函数,比如:现在需要修改其中一个roles的值,在qml中,直接给对应的roles赋值,但是没写成功。 所以请问:在QML里面,怎么对模型数据的修改更新到mysql数据库中?
- setEditStrategy(QSqlTableModel::OnFieldChange);
QHash<int, QByteArray> ftsqltablemodel::roleNames() const{ QHash<int, QByteArray> roles; for (int i = 0; i < this->record().count(); i ++) { roles.insert(Qt::UserRole + i + 1, record().fieldName(i).toUtf8()); qDebug() << "roles:" << record().fieldName(i).toUtf8(); } return roles; }
bool ftsqltablemodel::setData(const QModelIndex &index, const QVariant &value, int role){ bool ret = false; if (index.isValid()) { if (role < Qt::UserRole) { QSqlTableModel::setData(index, value,role); ret = true; } else { int columnIdx = role - Qt::UserRole - 1; QModelIndex modelIndex = this->index(index.row(), columnIdx); if(QSqlTableModel::setData(modelIndex, value,role)) { qDebug()<< "edit " << modelIndex.row() << modelIndex.column() << value; ret = true; } else{ qDebug()<< "edit failed " << modelIndex.row() << modelIndex.column() << value; } } } qDebug()<<"555555" << index.row() << index.column() << value << role; return ret; }
QML
- MouseArea{
anchors.fill:parent onClicked:{ model.MinCellVoltage = 4.2 } }
|
|