如何在QSqlTableModel中编辑特定的库

How do I edit particular coulmn in QSqlTableModel

本文关键字:编辑 QSqlTableModel      更新时间:2023-10-16

我想显示数据库中的一个表并显示它,但也想根据函数修改特定的列

QSqlTableModel *model = new QSqlTableModel(parentObject, database);
    model->setTable("employee");
    model->setEditStrategy(QSqlTableModel::OnManualSubmit);
    model->select();
    model->setHeaderData(0, Qt::Horizontal, tr("Name"));
    model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
    model->setHeaderData(2, Qt::Horizontal, tr("encrypted_item"));
    QTableView *view = new QTableView;
    view->setModel(model);
    view->hideColumn(0); // don't show the ID
    view->show(); 

但现在我不想打印加密的项目,而是想解密并显示它,我该怎么做?

您应该使用QSqlQueryModel并设置所需的查询,但您知道QSqlQueryModel是不可编辑的。解决方案是对QSqlQueryModel进行子类化,并重新实现Qt::ItemFlags QAbstractItemModel::flags ( const QModelIndex & index ) const方法,该方法返回一组设置了Qt::ItemIsEditable的标志。您可以在这里找到一个可编辑QSqlQueryModel的好例子。