diff --git a/pglab/CrudTab.cpp b/pglab/CrudTab.cpp index a7c6591..f44b0a1 100644 --- a/pglab/CrudTab.cpp +++ b/pglab/CrudTab.cpp @@ -29,7 +29,11 @@ CrudTab::CrudTab(IDatabaseWindow *context, QWidget *parent) ui->tableView->setItemDelegate(delegate); m_crudModel = new CrudModel(parent); - ui->tableView->setModel(m_crudModel); + + m_SortFilterProxy = new QSortFilterProxyModel(this); + m_SortFilterProxy->setSourceModel(m_crudModel); + ui->tableView->setModel(m_SortFilterProxy); + ui->tableView->setSortingEnabled(true); ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); @@ -62,7 +66,7 @@ void CrudTab::refresh() void CrudTab::on_actionRemove_rows_triggered() { std::set> row_ranges; - auto selection = ui->tableView->selectionModel()->selection(); + auto selection = m_SortFilterProxy->mapSelectionToSource(ui->tableView->selectionModel()->selection()); for (auto range : selection) { row_ranges.emplace(range.top(), range.height()); } diff --git a/pglab/CrudTab.h b/pglab/CrudTab.h index 640d3fe..12bbc1f 100644 --- a/pglab/CrudTab.h +++ b/pglab/CrudTab.h @@ -1,6 +1,7 @@ #ifndef CRUDTAB_H #define CRUDTAB_H +#include #include "catalog/PgClass.h" #include "IDatabaseWindow.h" #include @@ -31,6 +32,7 @@ private: std::optional m_table; CrudModel *m_crudModel = nullptr; + QSortFilterProxyModel *m_SortFilterProxy = nullptr; void initActions();