C++ 在视图中用ID替换字符串的简单方法
我正在C++ 在视图中用ID替换字符串的简单方法,c++,qt,model-view-controller,tableview,C++,Qt,Model View Controller,Tableview,我正在服务表之外存储服务名称。因此,services表包含了我在表视图中需要的所有内容,除了我想在视图中显示存储在service\u类型中的服务名称。 据我所知,即使是最简单的联接,也无法使QSqlTableModel工作 我知道我应该继承QAbstractTableModel,但我不知道如何在那里实现任何东西。Qt Creator中的一个向导为我制作了一个.h/.cpp对,但我在互联网上找不到任何示例来了解我应该实现什么 因此,我想问,是否有什么聪明的方法可以事先将所有服务类型字符串(只有20
服务
表之外存储服务名称。因此,services
表包含了我在表视图中需要的所有内容,除了我想在视图中显示存储在service\u类型中的服务名称。
据我所知,即使是最简单的联接,也无法使QSqlTableModel
工作
我知道我应该继承QAbstractTableModel
,但我不知道如何在那里实现任何东西。Qt Creator中的一个向导为我制作了一个.h/.cpp
对,但我在互联网上找不到任何示例来了解我应该实现什么
因此,我想问,是否有什么聪明的方法可以事先将所有服务类型字符串(只有200个)放入QMap,并让tableView显示它们而不是ID。正如我在评论中所说的,您可以在数据()中对QSqlTableModel
模型和数据()进行子类化
函数用从另一个表查询的数据替换原始数据。例如:
QVariant MyTableModel::data(const QModelIndex &index, int role) const
{
if (index.column() == 0 /*first column*/ && role == Qt::DisplayRole)
{
// Query data from another table (service_types) and as you get the right
// type for the given row, return it.
return type_I_got_from_service_type_table;
}
return QSqlTableModel::data(index, role);
}
也许,我可以继承QSqlTableModel本身,只需使data()
方法的行为不同(对于1列)?Qt文档相当完整。有关其工作原理的解释和示例,请参见。您必须对模型进行子类化,并在data()
函数中用从另一个表查询的数据替换原始数据。@vahancho好主意。我在重新实现中写了什么?比如说,我正在重新实现数据方法。我有一个if()
用于确定列。但除了它,还有什么要写呢?什么是“代码”的等价物“保持原样”
?我的意思是,在定义它时,不能使用->index(r,c)->data()方法,对吗?