Menu to for going to specific column
Columns are sorted alphabetically.
This commit is contained in:
parent
a7d4a5f13d
commit
c20427e10d
2 changed files with 52 additions and 7 deletions
|
|
@ -36,6 +36,7 @@ CrudTab::CrudTab(IDatabaseWindow *context, QWidget *parent)
|
||||||
m_SortFilterProxy->setSortRole(CustomSortRole);
|
m_SortFilterProxy->setSortRole(CustomSortRole);
|
||||||
ui->tableView->setModel(m_SortFilterProxy);
|
ui->tableView->setModel(m_SortFilterProxy);
|
||||||
ui->tableView->setSortingEnabled(true);
|
ui->tableView->setSortingEnabled(true);
|
||||||
|
m_SortFilterProxy->sort(0, Qt::AscendingOrder);
|
||||||
|
|
||||||
ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
|
|
@ -103,13 +104,52 @@ void CrudTab::on_actionRemove_rows_triggered()
|
||||||
|
|
||||||
void CrudTab::headerCustomContextMenu(const QPoint &pos)
|
void CrudTab::headerCustomContextMenu(const QPoint &pos)
|
||||||
{
|
{
|
||||||
auto menu = new QMenu(this);
|
if (!headerContextMenu)
|
||||||
|
buildHeaderContextMenu();
|
||||||
|
|
||||||
QAction *action = new QAction(QIcon(":/icons/script_go.png"), tr("Refresh"), this);
|
|
||||||
action->setShortcut(QKeySequence(Qt::Key_F5));
|
|
||||||
connect(action, &QAction::triggered, this, &CrudTab::refresh);
|
|
||||||
menu->addAction(action);
|
|
||||||
|
|
||||||
auto horizontal_header = ui->tableView->horizontalHeader();
|
if (headerContextMenu)
|
||||||
menu->popup(horizontal_header->mapToGlobal(pos));
|
{
|
||||||
|
auto horizontal_header = ui->tableView->horizontalHeader();
|
||||||
|
headerContextMenu->popup(horizontal_header->mapToGlobal(pos));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CrudTab::gotoColumn(QString column)
|
||||||
|
{
|
||||||
|
for (int i = 1; i < m_crudModel->columnCount(); ++i)
|
||||||
|
{
|
||||||
|
auto name = m_crudModel->headerData(i, Qt::Horizontal).toString();
|
||||||
|
if (name == column)
|
||||||
|
{
|
||||||
|
auto index = ui->tableView->currentIndex();
|
||||||
|
index = ui->tableView->model()->index(index.row(), i);
|
||||||
|
ui->tableView->setCurrentIndex(index);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CrudTab::buildHeaderContextMenu()
|
||||||
|
{
|
||||||
|
delete headerContextMenu;
|
||||||
|
headerContextMenu = new QMenu(this);
|
||||||
|
auto columnMenu = headerContextMenu->addMenu("Go to column");
|
||||||
|
|
||||||
|
std::vector<QString> columnNames;
|
||||||
|
for (int i = 1; i < m_crudModel->columnCount(); ++i)
|
||||||
|
columnNames.push_back(m_crudModel->headerData(i, Qt::Horizontal).toString());
|
||||||
|
|
||||||
|
std::sort(columnNames.begin(), columnNames.end());
|
||||||
|
for (auto& columnName : columnNames)
|
||||||
|
{
|
||||||
|
auto action = new QAction(columnName, this);
|
||||||
|
columnMenu->addAction(action);
|
||||||
|
connect(action, &QAction::triggered, this,
|
||||||
|
[this, columnName] ()
|
||||||
|
{
|
||||||
|
gotoColumn(columnName);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ namespace Ui {
|
||||||
|
|
||||||
class OpenDatabase;
|
class OpenDatabase;
|
||||||
class CrudModel;
|
class CrudModel;
|
||||||
|
class QMenu;
|
||||||
|
|
||||||
class CrudTab : public QWidget {
|
class CrudTab : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -34,11 +35,15 @@ private:
|
||||||
CrudModel *m_crudModel = nullptr;
|
CrudModel *m_crudModel = nullptr;
|
||||||
QSortFilterProxyModel *m_SortFilterProxy = nullptr;
|
QSortFilterProxyModel *m_SortFilterProxy = nullptr;
|
||||||
|
|
||||||
|
QMenu *headerContextMenu = nullptr;
|
||||||
|
|
||||||
void initActions();
|
void initActions();
|
||||||
|
void buildHeaderContextMenu();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_actionRemove_rows_triggered();
|
void on_actionRemove_rows_triggered();
|
||||||
void headerCustomContextMenu(const QPoint &pos);
|
void headerCustomContextMenu(const QPoint &pos);
|
||||||
|
void gotoColumn(QString column);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue