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的主要内容,如果未能解决你的问题,请参考以下文章