QGIS API Documentation 3.41.0-Master (3440c17df1d)
Loading...
Searching...
No Matches
qgscollapsiblegroupbox.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscollapsiblegroupbox.h
3 -------------------
4 begin : August 2012
5 copyright : (C) 2012 by Etienne Tourigny
6 email : etourigny dot dev at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSCOLLAPSIBLEGROUPBOX_H
19#define QGSCOLLAPSIBLEGROUPBOX_H
20
21#include <QGroupBox>
22#include <QPointer>
23#include <QToolButton>
24
25#include "qgis_sip.h"
26#include "qgssettings.h"
27#include "qgis_gui.h"
28
29class QMouseEvent;
30class QToolButton;
31class QScrollArea;
32
37class GUI_EXPORT QgsGroupBoxCollapseButton : public QToolButton
38{
39 Q_OBJECT
40
41 public:
42 QgsGroupBoxCollapseButton( QWidget *parent SIP_TRANSFERTHIS = nullptr )
43 : QToolButton( parent )
44 {}
45
46 bool altDown() const { return mAltDown; }
47 void setAltDown( bool updown ) { mAltDown = updown; }
48
49 bool shiftDown() const { return mShiftDown; }
50 void setShiftDown( bool shiftdown ) { mShiftDown = shiftdown; }
51
52 protected:
53 void mouseReleaseEvent( QMouseEvent *event ) override;
54
55 private:
56 bool mAltDown = false;
57 bool mShiftDown = false;
58};
59
71class GUI_EXPORT QgsCollapsibleGroupBoxBasic : public QGroupBox
72{
73 Q_OBJECT
74
79 Q_PROPERTY( bool collapsed READ isCollapsed WRITE setCollapsed USER true )
80
81
85 Q_PROPERTY( QString syncGroup READ syncGroup WRITE setSyncGroup )
86
91 Q_PROPERTY( bool scrollOnExpand READ scrollOnExpand WRITE setScrollOnExpand )
92
93 public:
94 QgsCollapsibleGroupBoxBasic( QWidget *parent SIP_TRANSFERTHIS = nullptr );
95 QgsCollapsibleGroupBoxBasic( const QString &title, QWidget *parent SIP_TRANSFERTHIS = nullptr );
96
100 bool isCollapsed() const { return mCollapsed; }
101
107 void setCollapsed( bool collapse );
108
112 QString syncGroup() const { return mSyncGroup; }
113
117 void setSyncGroup( const QString &grp );
118
120 void setScrollOnExpand( bool scroll ) { mScrollOnExpand = scroll; }
121
123 bool scrollOnExpand() {return mScrollOnExpand;}
124
125 signals:
127 void collapsedStateChanged( bool collapsed );
128
129 public slots:
130 void checkToggled( bool ckd );
131 void checkClicked( bool ckd );
132 void toggleCollapsed();
133
139 void setStyleSheet( const QString &style );
140
141 protected:
142
144 void collapseExpandFixes();
145
146 void showEvent( QShowEvent *event ) override;
147 void mousePressEvent( QMouseEvent *event ) override;
148 void mouseReleaseEvent( QMouseEvent *event ) override;
149 void changeEvent( QEvent *event ) override;
150
151 void updateStyle();
152 QRect titleRect() const;
153 void clearModifiers();
154
159 bool mShown;
160 QScrollArea *mParentScrollArea = nullptr;
161 QgsGroupBoxCollapseButton *mCollapseButton = nullptr;
162 QWidget *mSyncParent = nullptr;
163 QString mSyncGroup;
167
170
171 private:
172
173 void init();
174
175};
176
190{
191 Q_OBJECT
192
196 Q_PROPERTY( bool saveCollapsedState READ saveCollapsedState WRITE setSaveCollapsedState )
197
198
201 Q_PROPERTY( bool saveCheckedState READ saveCheckedState WRITE setSaveCheckedState )
202
203 public:
204 QgsCollapsibleGroupBox( QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsSettings *settings = nullptr );
205 QgsCollapsibleGroupBox( const QString &title, QWidget *parent SIP_TRANSFERTHIS = nullptr, QgsSettings *settings = nullptr );
206 ~QgsCollapsibleGroupBox() override;
207
208 // set custom QgsSettings pointer if group box was already created from QtDesigner promotion
209 void setSettings( QgsSettings *settings );
210
212 void setSaveCollapsedState( bool save ) { mSaveCollapsedState = save; }
213
219 void setSaveCheckedState( bool save ) { mSaveCheckedState = save; }
220 bool saveCollapsedState() { return mSaveCollapsedState; }
221 bool saveCheckedState() { return mSaveCheckedState; }
222
224 void setSettingGroup( const QString &group ) { mSettingGroup = group; }
226 QString settingGroup() const { return mSettingGroup; }
227
228 protected slots:
229
238 void loadState();
239
248 void saveState() const;
249
250 protected:
251 void showEvent( QShowEvent *event ) override;
252 QString saveKey() const;
253
254 private:
255 void init();
256
257 // pointer to app or custom, external QgsSettings
258 // QPointer in case custom settings obj gets deleted while groupbox's dialog is open
259 QPointer<QgsSettings> mSettings;
260 bool mDelSettings;
261
262 bool mSaveCollapsedState;
263 bool mSaveCheckedState;
264 QString mSettingGroup;
265};
266
267#endif
A groupbox that collapses/expands when toggled.
bool scrollOnExpand()
If this is set to false the parent QScrollArea will not be automatically scrolled to this widget's co...
void setScrollOnExpand(bool scroll)
Sets this to false to not automatically scroll parent QScrollArea to this widget's contents when expa...
QString syncGroup() const
Named group which synchronizes collapsing action when triangle is clicked while holding alt modifier ...
void collapsedStateChanged(bool collapsed)
Signal emitted when groupbox collapsed/expanded state is changed, and when first shown.
A groupbox that collapses/expands when toggled and can save its collapsed and checked states.
void setSaveCheckedState(bool save)
Set this to true to save/restore checked state.
void setSettingGroup(const QString &group)
Sets this to a defined string to share save/restore states across different parent dialogs.
QString settingGroup() const
Returns the name of the setting group in which the collapsed state will be saved.
void setShiftDown(bool shiftdown)
QgsGroupBoxCollapseButton(QWidget *parent=nullptr)
This class is a composition of two QSettings instances:
Definition qgssettings.h:64
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:53