From 8604acfe7de76cb8396cb97ecca5fc98a6a26162 Mon Sep 17 00:00:00 2001 From: Olivier Langella <Olivier.Langella@moulon.inra.fr> Date: Mon, 27 Mar 2017 23:07:27 +0200 Subject: [PATCH] problem to hide column --- src/gui/protein_list_view/protein_view.ui | 12 +++++++++- .../protein_list_view/proteinlistwindow.cpp | 24 +++++++++++++++++-- src/gui/protein_list_view/proteinlistwindow.h | 8 +++++++ .../protein_list_view/proteintablemodel.cpp | 6 ++--- src/gui/protein_list_view/proteintablemodel.h | 6 ++--- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/gui/protein_list_view/protein_view.ui b/src/gui/protein_list_view/protein_view.ui index e3bdbe0d..dedeb0a9 100644 --- a/src/gui/protein_list_view/protein_view.ui +++ b/src/gui/protein_list_view/protein_view.ui @@ -10,10 +10,16 @@ <height>404</height> </rect> </property> + <property name="contextMenuPolicy"> + <enum>Qt::CustomContextMenu</enum> + </property> <property name="windowTitle"> <string>Protein list</string> </property> <widget class="QWidget" name="centralwidget"> + <property name="contextMenuPolicy"> + <enum>Qt::CustomContextMenu</enum> + </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> @@ -48,7 +54,11 @@ </layout> </item> <item> - <widget class="QTableView" name="tableView"/> + <widget class="QTableView" name="tableView"> + <property name="contextMenuPolicy"> + <enum>Qt::DefaultContextMenu</enum> + </property> + </widget> </item> <item> <widget class="QLineEdit" name="proteinSearchEdit"/> diff --git a/src/gui/protein_list_view/proteinlistwindow.cpp b/src/gui/protein_list_view/proteinlistwindow.cpp index cd7b08ed..9b368bd6 100644 --- a/src/gui/protein_list_view/proteinlistwindow.cpp +++ b/src/gui/protein_list_view/proteinlistwindow.cpp @@ -39,7 +39,7 @@ ProteinListWindow::ProteinListWindow(ProjectWindow *parent): _protein_table_model_p = new ProteinTableModel(this); - _p_proxy_model = new ProteinTableProxyModel(_protein_table_model_p); + _p_proxy_model = new ProteinTableProxyModel(this, _protein_table_model_p); _p_proxy_model->setSourceModel(_protein_table_model_p); _p_proxy_model->setDynamicSortFilter(true); ui->tableView->setModel( _p_proxy_model ); @@ -78,11 +78,17 @@ ProteinListWindow::ProteinListWindow(ProjectWindow *parent): connect( this, SIGNAL( focusReceived(bool) ),this, SLOT(doFocusReceived(bool)) ); + connect(ui->centralwidget, SIGNAL(customContextMenuRequested(const QPoint &)), + this, SLOT(showContextMenu(const QPoint &))); //connect(_protein_table_model_p, SIGNAL(layoutChanged()), this, SLOT(updateStatusBar())); #endif - } +void ProteinListWindow::showEvalueColumn(bool show) { + _display_evalue = show; + + ui->tableView->setColumnHidden(4,!show); +} void ProteinListWindow::doubleclickOnproteinMatch(ProteinMatch * p_protein_match) { emit proteinMatchClicked(p_protein_match); //updateStatusBar(); @@ -93,6 +99,20 @@ void ProteinListWindow::doFocusReceived(bool has_focus) { } } + +void ProteinListWindow::showContextMenu(const QPoint & pos) { + QMenu contextMenu(tr("Context menu"), this); + + QAction evalue_action("Evalue", this); + evalue_action.setCheckable(true); + evalue_action.setChecked(_display_evalue); + connect(&evalue_action, SIGNAL(toggled(bool)), this, SLOT(showEvalueColumn(bool))); + contextMenu.addAction(&evalue_action); + + contextMenu.exec(mapToGlobal(pos)); +} + + ProteinListWindow::~ProteinListWindow() { //if (_p_ms_data_file != nullptr) delete _p_ms_data_file; diff --git a/src/gui/protein_list_view/proteinlistwindow.h b/src/gui/protein_list_view/proteinlistwindow.h index cae8a57c..ce6314f1 100644 --- a/src/gui/protein_list_view/proteinlistwindow.h +++ b/src/gui/protein_list_view/proteinlistwindow.h @@ -58,18 +58,26 @@ signals: void proteinMatchClicked(ProteinMatch * p_protein_match); void identificationGroupEdited(IdentificationGroup * p_identification_group); + protected slots: void doNotValidHide(bool hide); void doNotCheckedHide(bool hide); void doNotGroupedHide(bool hide); + void showContextMenu(const QPoint &); protected : void updateStatusBar(); + +private : + + void showEvalueColumn(bool show); + private: IdentificationGroup * _p_identification_group; Ui::ProteinView *ui; ProteinTableModel * _protein_table_model_p = nullptr; ProteinTableProxyModel * _p_proxy_model = nullptr; ProjectWindow * _project_window; + bool _display_evalue = true; }; diff --git a/src/gui/protein_list_view/proteintablemodel.cpp b/src/gui/protein_list_view/proteintablemodel.cpp index 1ed92c2f..932391ea 100644 --- a/src/gui/protein_list_view/proteintablemodel.cpp +++ b/src/gui/protein_list_view/proteintablemodel.cpp @@ -28,17 +28,17 @@ #include <QDebug> -ProteinTableProxyModel::ProteinTableProxyModel(ProteinTableModel* protein_table_model_p): QSortFilterProxyModel(protein_table_model_p), - m_minGravity(0.0), m_minDensity(0.0) +ProteinTableProxyModel::ProteinTableProxyModel(ProteinListWindow * p_protein_list_window, ProteinTableModel* protein_table_model_p): QSortFilterProxyModel(protein_table_model_p) { _protein_table_model_p = protein_table_model_p; + _p_protein_list_window = p_protein_list_window; } - bool ProteinTableProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { return _protein_table_model_p->acceptRow(source_row); //return true; } + void ProteinTableProxyModel::onTableClicked(const QModelIndex &index) { qDebug() << "ProteinTableProxyModel::onTableClicked begin " << index.row(); diff --git a/src/gui/protein_list_view/proteintablemodel.h b/src/gui/protein_list_view/proteintablemodel.h index 3cbb134d..452de6c4 100644 --- a/src/gui/protein_list_view/proteintablemodel.h +++ b/src/gui/protein_list_view/proteintablemodel.h @@ -35,9 +35,10 @@ class ProteinTableProxyModel : public QSortFilterProxyModel { Q_OBJECT public: - ProteinTableProxyModel(ProteinTableModel* protein_table_model_p); + ProteinTableProxyModel(ProteinListWindow * p_protein_list_window, ProteinTableModel* protein_table_model_p); bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; bool lessThan(const QModelIndex & left, const QModelIndex & right) const override; @@ -46,9 +47,8 @@ public slots: void onTableClicked(const QModelIndex &index); void onTableDoubleClicked(const QModelIndex &index); private: - double m_minGravity; - double m_minDensity; ProteinTableModel* _protein_table_model_p; + ProteinListWindow * _p_protein_list_window; }; class ProteinTableModel: public QAbstractTableModel -- GitLab