QTableView C ++在标题单击时排序

时间:2018-10-07 19:10:44

标签: c++ qt qt5 qtableview qsqlquery

当我单击列标题时,需要对表中的列进行排序。 但是现在我不能了,那是我的桌子:

enter image description here

如果单击标题,则没有任何操作。

那是我的c ++ QT代码:

hitTest

我该怎么办?

2 个答案:

答案 0 :(得分:5)

您必须做两件事:


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

答案 1 :(得分:1)

您可以通过以下方式启用排序:

use Illuminate \ Pagination \ Paginator;

public function boot ()
{
      Paginator::useBootstrap();
}

对我有用。我使用的是qt 5.15和QTableWidget而不是QTableView。

以下是您的代码示例:

filesTable->setSortingEnabled(true);

创建表后,可以添加此属性。此方法是从QTableWidget类继承的。