经过检查,发现虽然Qt官方文档说QAbstractTableModel只需实现3个虚函数(rowCount,columnCount,data),但是由于在本模型里,实际的数据是存放在自定义的二维数组里,要让模型找到实际的数据,必须要明确地指明行、列参数,所以还必须实现index函数。一开始正是没有实现这个函数,才会导致模型加载数据失败,出现上篇博客截图的那种结果。
现在将SearchModel代码公布如下,其中已有必要的注释:
search_model.h
#ifndef SEARCH_MODEL_H
#define SEARCH_MODEL_H
class QTableWidgetItem;
class SearchItem;
#include <QAbstractTableModel>
class SearchModel : public QAbstractTableModel
{
Q_OBJECT
public:
explicit SearchModel(QObject *parent = 0);
//以下3个是必须要实现的基类的虚函数
int rowCount(const QModelIndex &/*parent*/) const;
int columnCount(const QModelIndex &/*parent*/) const;
QVariant data(const QModelIndex &index, int role) const;
//index函数也必须要实现,否则模型无法通过行列来唯一对应到某个item
QModelIndex index(int row,
int column,
const QModelIndex &