如何用文本别名替换 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 了解如何使用代理模型。
我正在使用 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 了解如何使用代理模型。