爲了正確地繼承QAbstractProxyView類並使其與視圖(如QListView)一起工作,我需要做些什麼。到目前爲止,我這樣做:如何正確地繼承子類並插入視圖QAbstractProxyModel
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:
};
每functionin這個類是在單獨cpp
文件中實現。不幸的是在我的Ui
類中做:
Proxy* p = new Proxy;
p->setSourceModel(model_);//model is of class Model
listView->setModel(p);
不起作用;來自模型的數據不會顯示在listView
中。
你試過了什麼?你是否放了一些'qDebug'語句來檢查像'data'或'index'這樣的函數是否被調用? –
@Laurent是的,我確實把qDebug語句和代理的這些方法不調用。這是怎麼回事? – user336359