Nik*_*tue 2 c++ qt qtableview qt5 qsqlquery
当我点击列标题时,我需要在表格中对列进行排序.但现在我不能,那是我的桌子:

如果单击标题,则无法执行操作.
这是我的c ++ QT代码:
void showTable()
{
connOpen();
QSqlQueryModel * myModel=new QSqlQueryModel();
QSqlQuery select;
if (!select.exec("select * from tab")) {
QMessageBox::critical(this, tr("Error"), select.lastError().text());
}
else {
myModel->setQuery(select);
ui->tableView->setModel(myModel);
}
connClose();
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
你必须做两件事:
启用sortingEnabled视图的属性,以便用户可以通过单击水平标题来控制订单.
使用QSortFilterProxyModel处理的顺序关系.
void showTable()
{
connOpen();
QSqlQueryModel * myModel=new QSqlQueryModel(ui->tableView);
QSqlQuery select;
if (!select.exec("select * from tab")) {
QMessageBox::critical(this, tr("Error"), select.lastError().text());
}
else {
myModel->setQuery(select);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(myModel); // create proxy
proxyModel->setSourceModel(myModel);
ui->tableView->setSortingEnabled(true); // enable sortingEnabled
ui->tableView->setModel(proxyModel);
}
connClose();
}
Run Code Online (Sandbox Code Playgroud)