标题点击时QTableView c ++排序

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)

我该怎么办?

eyl*_*esc 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();
}
Run Code Online (Sandbox Code Playgroud)