QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
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 
117  static QgsPanelWidget *findParentPanel( QWidget *widget );
118 
126  virtual QString menuButtonTooltip() const;
127 
134  virtual QMenu *menuButtonMenu();
135 
136  signals:
137 
148 
155  void showPanel( QgsPanelWidget *panel );
156 
164 
165  public slots:
166 
177  void openPanel( QgsPanelWidget *panel );
178 
183  void acceptPanel();
184 
185  protected:
186 
191  void keyPressEvent( QKeyEvent *event ) override;
192 
193  private:
194  bool mAutoDelete = true;
195  QString mPanelTitle;
196  bool mDockMode = false;
197 
198 };
199 
200 
209 class GUI_EXPORT QgsPanelWidgetWrapper: public QgsPanelWidget
210 {
211  Q_OBJECT
212  public:
213 
220  QgsPanelWidgetWrapper( QWidget *widget, QWidget *parent = nullptr );
221 
226  QWidget *widget() { return mWidget; }
227 
228  private:
229  QWidget *mWidget = nullptr;
230 
231 };
232 
233 #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.