如何编辑QSqlTableModel中的特定列

时间:2014-10-21 07:54:17

标签: c++ sql qt qtableview qsqltablemodel

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

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(); 

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

1 个答案:

答案 0 :(得分:1)

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