c++ - 如果单击标题 View ,如何按 TableView 中的列对数据进行排序

标签 c++ qt qt5 qtableview

我有一个 QTableView,其中填充了 QSqlQueryModel。我试图根据检查的 header 对表进行排序,但是当我按下它们时没有任何反应。我使用了函数sortByColumn() 问题是结果完全相同,当我单击标题时排序不起作用。 我究竟做错了什么?

 Log cnn;
 QSqlQueryModel *modal=new QSqlQueryModel();
 QSqlQuery *qry=new QSqlQuery(cnn.mydb);
 qry->prepare("select *from log");
 qry->exec();
 modal->setQuery(*qry);
 ui->tableView->setModel(modal);
 ui->tableView->setAlternatingRowColors(true);
 ui->tableView->setSortingEnabled(true);
 ui->tableView->sortByColumn(4,Qt::AscendingOrder);//4 indicate the 4th column

最佳答案

而且我还使用 QSortFilterProxyModel 解决了我的问题。

Log cnn;
QSqlQueryModel *modal=new QSqlQueryModel(this);
QSqlQuery *qry=new QSqlQuery(cnn.mydb);
qry->prepare("select *from AccessLog");
qry->exec();
modal->setQuery(*qry);

QSortFilterProxyModel *m=new QSortFilterProxyModel(this);
m->setDynamicSortFilter(true);
m->setSourceModel(modal);
ui->tableView->setModel(m);
ui->tableView->setSortingEnabled(true);

关于c++ - 如果单击标题 View ,如何按 TableView 中的列对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22652038/

相关文章:

c++ - qt使用小部件崩溃

c++ - 为什么当 QPushButton::paintEvent 后跟 QPainter::fillRect 时应用程序崩溃?

qt - 查找 QWidget 所在的屏幕

c++ - C++ 的 Visual Studio ?

C++ : Converting String to Double

c++ - 将 getline() 字符串拆分为多个 int 和 char 变量?

c++ - 通过使用 WIN32OLE 的 Ruby 的 C++ dll 的代码覆盖率

linux - 使用 Qt 查找 Linux 机器上安装了哪个编辑器

python - 在 QTableWidget 中编辑单元格时不显示旧值

c++ - Qt4 到 Qt5:带有 5 个参数的 QPainter::drawPixmapFragments() - 如何解决?