Qt C++ 排序 TableView

Posted

技术标签:

【中文标题】Qt C++ 排序 TableView【英文标题】:Qt C++ sorting TableView 【发布时间】:2017-01-05 15:56:03 【问题描述】:

上次我做“计算机服务”作为学习项目。我想在QTableView 中展示实际产品。进展顺利,它很好地显示了来自SQLite 的值。我想通过点击表格的标题对值进行排序(按点击的列排序)。

这是我的代码:

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

你能帮帮我吗?

【问题讨论】:

QSortFilterProxyModel 【参考方案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();

这应该可以解决问题,您只需单击标题即可按此列排序。

【讨论】:

好吧,那么什么都不会发生。单击列标题会更改标题上的箭头(用于升序或降序),但不会排序。我会尝试列单击以从数据库中获取已排序的列,然后插入。 @Glox 我已经在与您不同的数据集上尝试了代码的 QTableView 部分,它对我来说效果很好。没有一列可以排序,还是只能排序一部分? 没有一列可以排序,当我点击标题时没有任何反应:/

以上是关于Qt C++ 排序 TableView的主要内容,如果未能解决你的问题,请参考以下文章

qt c++删除文件夹下旧的文件或文件夹

qt c++删除文件夹下旧的文件或文件夹

qt c++删除文件夹下旧的文件或文件夹

qt c++删除文件夹下旧的文件或文件夹

qt 怎么为外围的widget添加边框

如何在 C++ 或 C 中浏览文件夹?