Filter in QTreeView

Alles rund um die Programmierung mit Qt
Antworten
mugi
Beiträge: 30
Registriert: 7. Juli 2011 18:12

Filter in QTreeView

Beitrag von mugi »

Hallo,
ich habe einen QTreeView mit viele Zeilen und Spalten. Die Daten kommen aus einem QAbstractItemModel.
Jetzt zu meiner Frage: Gibt es einen einfachen Weg einer Art Filter zu implementieren so dass über einem QPushButton, nur die Zeilen die einen bestimmten Kriterium erfüllen angezeigt werden. (An der erste Spalte habe ich Checkboxen, und ich will dass nur die gecheckten Zeilen angezeigt werden)
Hier mein Model:

Code: Alles auswählen

 QModelIndex myModel::index ( int row, int column, const QModelIndex & parent) const 
       { 
             return createIndex(row, column); 
       } 
int myModel::rowCount ( const QModelIndex & parent) const 
       { 
            return(r); 
       } 
int myModel::columnCount ( const QModelIndex & parent) const 
       { 
            return(c); 
       } 
QVariant myModel::data ( const QModelIndex & index, int role) const 
       {  ...
       } 
Qt::ItemFlags myModel::flags(const QModelIndex& index) const 
       {....
       } 
bool myModel::setData(const QModelIndex& index, const QVariant& value, int role) 
        { ...
        }
ich habe eigentlich an

Code: Alles auswählen

void setRowHidden ( int row, const QModelIndex & parent, bool hide )
gedacht, aber ich weiß nicht wie ich das im Model implementieren soll -->der Compiler sagt dass der Model keine setRowHidden Methode besitzt !!

Vielen Dank im Voraus.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Filter in QTreeView

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
mugi
Beiträge: 30
Registriert: 7. Juli 2011 18:12

Re: Filter in QTreeView

Beitrag von mugi »

Danke, es klappt wunderbar
Für das Sortieren, habe ich folgendes Code geschrieben:

Code: Alles auswählen

proxyModel = new QSortFilterProxyModel(this);
proxyModel->setDynamicSortFilter(true);
proxyModel->setSourceModel(mymodel);
treeview->setModel(proxyModel);
treeview->setSortingEnabled(true);
Jetzt ist das Sortieren für alle Spalten möglich. Wie kann ich mein Code ändern so dass dies für nur eine bestimmte Spalte möglich wird ?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Filter in QTreeView

Beitrag von Christian81 »

QSortFilterProxyModel ableiten und das gewünschte Verhalten implementieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten