2017-01-05 48 views
0

上次我做「計算機服務」作爲研究項目。我想在QTableView中顯示實際產品。它運行良好,它很好地顯示了SQLite的值。我想通過單擊表格的標題來排序值(按列單擊排序)。Qt C++排序TableView

這裏是我的代碼:

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(); 

你能幫助我嗎?

+1

看看'QSortFilterProxyModel'。 – drescherjm

回答

1

在上面的snipet中,您的部分顯示爲可排序但不可點擊。

要添加該功能,您只需致電QHeaderView::setSectionsClickable()即可。

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(); 

這應該可以做到,只需點擊標題即可按此列排序。

+0

好吧,那麼什麼都沒有發生。單擊列標題可以更改標題上的箭頭(對於升序或降序),但不會進行排序。我會嘗試列點擊從數據庫獲得排序的列,然後插入。 – Glox

+0

@Glox我已經嘗試了不同的數據集上的代碼的QTableView部分比你,它適用於我。沒有列可以排序,或只有其中一些? –

+0

沒有列可以排序,只要點擊標題就沒有任何反應:/ – Glox