2017-01-05 15 views
0

前回私は研究のためのプロジェクトとして「コンピュータサービス」をやっていました。実際の商品をQTableViewに表示したかったのです。うまくいって、それはSQLiteの値をうまく表示します。私はテーブルのヘッダー(クリックして並べ替える)をクリックして値をソートしたいと思います。Qt C++ sorting 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

上記のスニペットでは、セクションはソート可能だがクリック可能ではないように見えます。

この機能を追加するには、単に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