2017-01-31 1 views
1

Ich habe ein TableView, die die Informationen in einem QSortFilterProxyModel enthaltenen zeigt (dessen Modell ist ein QAbstractTableModel)Fest/fror Reihe in Tableview

Gibt es eine Möglichkeit/Einfrieren zu beheben in dem TableView's oben alle Zeilen mit einer bestimmten Eigenschaft auf wahr gesetzt, während Filter und Sortierung für die anderen Zeilen beibehalten werden?

+1

Nützliche Informationen [hier] (http://www.qtcentre.org/ Threads/25484-Funktionalität-von-QTableView). – Tarod

Antwort

0

Um eine bestimmte Zeile immer an der Oberseite des Tableview zu setzen, habe ich die folgende Logik, um die QSortFilterProxyModel ‚s lessThan Methode:

// Get left and right row 
int leftRow = left.row(); 
int rightRow = right.row(); 

// Get specific data from left row 
QModelIndex leftIndex = sourceModel()->index(leftRow, SPECIFIC_DATA_INDEX); 
QString leftProperty = sourceModel()->data(leftIndex).toString(); 
// Get specific data from right row 
QModelIndex rightIndex = sourceModel()->index(rightRow, SPECIFIC_DATA_INDEX); 
QString rightProperty = sourceModel()->data(rightIndex).toString(); 

if(leftProperty .compare("Invalid") == 0) // put left on top if it has a specific property 
    if(sortOrder() == Qt::AscendingOrder) { 
     return true; 
    } else { 
     return false; 
    } 
} else if(rightProperty .compare("Invalid") == 0) { // put right on top if it has a specific property 
    if(sortOrder() == Qt::AscendingOrder) { 
     return false; 
    } else { 
     return true; 
    } 
}