如何用文本别名替换 SQL table 视图的列的数值?

How to replace numeric values of a column of a SQL table view with text aliases?

我正在使用 Qt5。 我设法连接到 sql 数据库并使用 QtCreator 我现在有一个 QTableView,它使用 SELECT * ... 从我之前定义的测试 table 中很好地填充女士 SQL 经理...

只有一件事我想改变:
...一个名为 "Error" 的列现在有 numeric/integer 个值,例如:-101、-102、-105 等等。老实说,我宁愿使用 "Error opening file" 而不是 -101,也希望使用 "Socket error" 而不是 -105,等等。你明白了。 此外,此 "modification" 不能影响数据库中的 table,而只能影响 table-view。

拜托,你知道我该怎么做吗?

您应该创建 QSortFilterProxyModel 的子类并重新实现它的 data 虚方法。它可以是这样的:

QVariant MyModel::data(const QModelIndex & index, int role = Qt::DisplayRole) const {
  QVariant result = QSortFilterProxyModel::data(index, role);
  if (index.column() == ERROR_COLUMN) {
    result = error_to_string(result.toInt());
  }
  return result;    
}

请参阅 the documentation 了解如何使用代理模型。