为了正确子类化QAbstractProxyView并使它与QListView之类的 View 一起工作,我必须做什么。到目前为止,我已经做到了:
class Proxy : public QAbstractProxyModel
{
Q_OBJECT
public:
explicit Proxy(QAbstractItemModel* source_model = 0, QObject *parent = 0);
QModelIndex mapToSource(const QModelIndex & proxyIndex) const;
QModelIndex mapFromSource(const QModelIndex & sourceIndex) const;
virtual QModelIndex index(int row, int column,
const QModelIndex &parent = QModelIndex()) const;
virtual QModelIndex parent(const QModelIndex &child) const;
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
virtual QVariant data(const QModelIndex&, int = Qt::DisplayRole) const;
signals:
public slots:
};
此类中的每个函数都在单独的
cpp
文件中实现。不幸的是,在我的Ui
类中:Proxy* p = new Proxy;
p->setSourceModel(model_);//model is of class Model
listView->setModel(p);
不起作用;来自模型的数据不会显示在
listView
中。 最佳答案
如果要与QListView一起使用,则应使模型继承自QAbstractListModel
。您只需要实现三种方法:构造函数rowCount
和data
。另请参阅此帖子以获取更多信息:How to create a custom model for a QListView in Qt