2017-01-05 6 views
0

Letztes Mal war ich "Computer Service" als ein Projekt für Studien. Ich wollte aktuelle Produkte in QTableView anzeigen. Es ging gut, es zeigt Werte von SQLite schön. Ich möchte Werte sortieren, indem ich auf die Kopfzeile der Tabelle klicke (nach Spalte sortiert).Qt C++ Sortierung TableView

Hier ist mein Code:

QSqlQueryModel * modal = new QSqlQueryModel(); 
QSqlQuery * qry = new QSqlQuery(); 
qry->prepare("Select * from products"); 
qry->exec(); 
modal->setQuery(*qry); 
ui->tableView_2->setModel(modal); 
ui->tableView_2->setSortingEnabled(true); 
ui->tableView_2->show(); 

Können Sie mir helfen?

+1

Schauen Sie sich 'QSortFilterProxyModel' an. – drescherjm

Antwort

1

In der obigen Abbildung scheinen Ihre Abschnitte sortierbar, aber nicht anklickbar.

Um diese Funktion hinzuzufügen, können Sie einfach QHeaderView::setSectionsClickable() anrufen.

QSqlQueryModel * modal = new QSqlQueryModel(); 
QSqlQuery * qry = new QSqlQuery(); 
qry->prepare("Select * from products"); 
qry->exec(); 
modal->setQuery(*qry); 
ui->tableView_2->setModel(modal); 
ui->tableView_2->setSortingEnabled(true); 
ui->tableView_2->horizontalHeader()->setSectionsClickable(1); 
ui->tableView_2->show(); 

Dies sollte den Trick tun, und Sie können einfach auf die Header klicken, um nach dieser Spalte zu sortieren.

+0

Nun, nichts passiert dann. Wenn Sie auf Spaltenüberschriften klicken, ändert sich der Pfeil in einer Kopfzeile (für aufsteigende oder absteigende Reihenfolge), aber es wird nicht sortiert. Ich versuche Spalte klicken, um sortierte Spalte aus der Datenbank zu bekommen und dann einfügen. – Glox

+0

@Glox Ich habe versucht den QTableView Teil des Codes auf einem anderen Datensatz als Sie und es funktioniert gut für mich. Keine der Spalten kann sortiert werden, oder nur einige von ihnen? –

+0

Keine der Spalten kann sortiert werden, nur passiert nichts, wenn ich auf die Kopfzeile klicke: / – Glox