QTableView c ++ сортировать при нажатии заголовка - PullRequest
0 голосов
/ 07 октября 2018

Мне нужно отсортировать столбец в моей таблице, когда я нажимаю на заголовок столбца.Но теперь я не могу, это моя таблица:

enter image description here

Нет никаких действий, если я нажму на заголовок.

Это мой код QT на c ++:

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

Что мне делать?

1 Ответ

0 голосов
/ 07 октября 2018

Вы должны сделать 2 вещи:

  • Включить свойство вида 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();
}
...