2011-11-30 2 views
0

QAbstractProxyView를 올바르게 서브 클래스 화하고 QListView와 같은 뷰에서 작동하게하려면 어떻게해야합니까? 이 클래스는 별도의 cpp 파일에 구현되어올바르게 서브 클래 싱하여 뷰로 연결하는 방법 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 : 지금까지 내가 이런 짓을했습니다. 안타깝게도 내 Ui 클래스에서 수행 :

Proxy* p = new Proxy; 
p->setSourceModel(model_);//model is of class Model 
listView->setModel(p); 

이 작동하지 않습니다. 모델의 데이터는 listView에 표시되지 않습니다.

+0

당신은 무엇을 시도 했습니까? 'data' 나'index'와 같은 함수가 호출되고 있는지 확인하기 위해'qDebug' 문을 써 놓았습니까? –

+0

@Laurent 예, qDebug 문을 넣었고 프록시의 메서드가 호출되지 않았습니다. 무슨 일이야? – user336359

답변

2

QListView에서 작동하도록하려면, QAbstractListModel에서 모델을 상속해야합니다. 세 가지 메서드, 즉 생성자 rowCountdata 만 구현하면됩니다. 자세한 내용은이 게시물을 참조하십시오. How to create a custom model for a QListView in Qt

+0

은 QTreeView 및 QTableView에서도 작동하도록되어 있습니다. – user336359

관련 문제