QGIS API Documentation  3.21.0-Master (af9a72eda6)
qgspanelwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgspanelwidget.h
3  ---------------------
4  begin : June 2016
5  copyright : (C) 2016 by Nathan Woodrow
6  email :
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 #ifndef QGSPANELWIDGET_H
16 #define QGSPANELWIDGET_H
17 
18 #include <QWidget>
19 #include <QKeyEvent>
20 #include <QStack>
21 #include "qgis_gui.h"
22 
23 class QMenu;
24 
29 class GUI_EXPORT QgsPanelWidget : public QWidget
30 {
31  Q_OBJECT
32  public:
33 
38  QgsPanelWidget( QWidget *parent = nullptr );
39 
44  void setPanelTitle( const QString &panelTitle ) { mPanelTitle = panelTitle; }
45 
50  QString panelTitle() { return mPanelTitle; }
51 
59  void connectChildPanels( const QList<QgsPanelWidget *> &panels );
60 
68  void connectChildPanel( QgsPanelWidget *panel );
69 
75  virtual void setDockMode( bool dockMode );
76 
85  virtual bool applySizeConstraintsToStack() const;
86 
93  bool dockMode() { return mDockMode; }
94 
101  void setAutoDelete( bool autoDelete ) { mAutoDelete = autoDelete; }
102 
109  bool autoDelete() { return mAutoDelete; }
110 
118  static QgsPanelWidget *findParentPanel( QWidget *widget );
119 
127  virtual QString menuButtonTooltip() const;
128 
135  virtual QMenu *menuButtonMenu();
136 
137  signals:
138 
149 
156  void showPanel( QgsPanelWidget *panel );
157 
165 
166  public slots:
167 
178  void openPanel( QgsPanelWidget *panel );
179 
184  void acceptPanel();
185 
186  protected:
187 
192  void keyPressEvent( QKeyEvent *event ) override;
193 
194  private:
195  bool mAutoDelete = true;
196  QString mPanelTitle;
197  bool mDockMode = false;
198 
199 };
200 
201 
210 class GUI_EXPORT QgsPanelWidgetWrapper: public QgsPanelWidget
211 {
212  Q_OBJECT
213  public:
214 
221  QgsPanelWidgetWrapper( QWidget *widget, QWidget *parent = nullptr );
222 
227  QWidget *widget() { return mWidget; }
228 
229  private:
230  QWidget *mWidget = nullptr;
231 
232 };
233 
234 #endif // QGSPANELWIDGET_H
Wrapper widget for existing widgets which can't have the inheritance tree changed,...
QWidget * widget()
Returns the internal widget that is wrapped in this panel.
Base class for any widget that can be shown as a inline panel.
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface.
QString panelTitle()
The title of the panel.
void panelAccepted(QgsPanelWidget *panel)
Emitted when the panel is accepted by the user.
bool autoDelete()
The the auto delete property on the widget.
void setAutoDelete(bool autoDelete)
The the auto delete property on the widget.
void widgetChanged()
Emitted when the widget state changes.
void setPanelTitle(const QString &panelTitle)
Set the title of the panel when shown in the interface.
bool dockMode()
Returns the dock mode state.