23 #include <QToolButton> 24 #include <QMouseEvent> 25 #include <QPushButton> 26 #include <QStyleOptionGroupBox> 28 #include <QScrollArea> 118 QgsDebugMsg(
"did not find a QScrollArea parent" );
146 if ( event->
modifiers() & ( Qt::AltModifier | Qt::ControlModifier | Qt::ShiftModifier )
160 mAltDown = (
event->modifiers() & ( Qt::AltModifier | Qt::ControlModifier ) );
161 mShiftDown = (
event->modifiers() & Qt::ShiftModifier );
196 tipTxt =
tr(
"Ctrl (or Alt)-click to toggle all" ) +
'\n' +
tr(
"Shift-click to expand, then collapse others" );
206 QStyle::SC_GroupBoxLabel,
this );
249 QgsDebugMsg(
"Alt or Shift key down, syncing group" );
317 bool usingQgsStyle = settings.
value(
"qgis/stylesheet/groupBoxCustom",
QVariant(
false ) ).
toBool();
322 QStyle::SC_GroupBoxFrame,
this );
330 int topBuffer = ( usingQgsStyle ? 3 : 1 ) + offsetStyle;
331 int offsetTop = topBuffer;
332 int offsetTopTri = topBuffer;
351 QStyle::SC_GroupBoxFrame,
this );
353 QStyle::SC_GroupBoxCheckBox,
this );
354 if ( rectFrame.
left() <= 0 )
355 offsetLeft = 6 + rectFrame.
left();
356 if ( rectFrame.
top() <= 0 )
361 offsetTop = ( rectCheckBox.
height() / 2 ) -
363 offsetTopTri = offsetTop + 1;
367 offsetTop = 6 + rectFrame.
top();
368 offsetTopTri = offsetTop;
380 ss +=
"QgsCollapsibleGroupBoxBasic, QgsCollapsibleGroupBox {";
381 ss +=
QString(
" margin-top: %1px;" ).
arg( topBuffer + ( usingQgsStyle ? rectTitle.
height() + 5 : rectFrame.
top() ) );
384 ss +=
"QgsCollapsibleGroupBoxBasic::title, QgsCollapsibleGroupBox::title {";
385 ss +=
" subcontrol-origin: margin;";
386 ss +=
" subcontrol-position: top left;";
387 ss +=
QString(
" margin-left: %1px;" ).
arg( marginLeft );
388 ss +=
QString(
" margin-right: %1px;" ).
arg( marginRight );
389 ss +=
QString(
" left: %1px;" ).
arg( offsetLeft );
390 ss +=
QString(
" top: %1px;" ).
arg( offsetTop );
393 ss +=
" background-color: rgba(0,0,0,0)";
401 ssd +=
" background-color: rgba(255, 255, 255, 0); border: none;";
402 ssd +=
QString(
"} QgsCollapsibleGroupBoxBasic > QToolButton#%1:focus, QgsCollapsibleGroupBox > QToolButton#%1:focus { border: 1px solid palette(highlight); }" ).
arg(
mCollapseButton->
objectName() );
404 if ( offsetLeft != 0 || offsetTopTri != 0 )
453 const char* hideKey =
"CollGrpBxHide";
570 saveKey =
'/' + setgrp +
saveKey;
571 saveKey =
"QgsCollapsibleGroupBox" +
saveKey;
590 val =
mSettings->value( key +
"/checked" );
596 val =
mSettings->value( key +
"/collapsed" );
QObject * child(const char *objName, const char *inheritsClass, bool recursiveSearch) const
void clicked(bool checked)
QString syncGroup
An optional group to be collapsed and uncollapsed in sync with this group box if the Alt-modifier is ...
static QIcon getThemeIcon(const QString &theName)
Helper to get a theme icon.
const QObjectList & children() const
void collapsedStateChanged(bool collapsed)
Signal emitted when groupbox collapsed/expanded state is changed, and when first shown.
QScrollArea * mParentScrollArea
~QgsCollapsibleGroupBoxBasic()
virtual QRect subControlRect(ComplexControl control, const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget) const =0
void setCollapsed(bool collapse)
Collapse or uncollapse this groupbox.
void changeEvent(QEvent *event) override
void showEvent(QShowEvent *event) override
QgsCollapsibleGroupBox(QWidget *parent=nullptr, QSettings *settings=nullptr)
QString tr(const char *sourceText, const char *disambiguation, int n)
QgsGroupBoxCollapseButton * mCollapseButton
~QgsCollapsibleGroupBox()
QList< T > findChildren(const QString &name) const
void checkClicked(bool ckd)
void processEvents(QFlags< QEventLoop::ProcessEventsFlag > flags)
void setChecked(bool checked)
QVariant property(const char *name) const
bool isCollapsed() const
Returns the current collapsed state of this group box.
A groupbox that collapses/expands when toggled.
virtual void mouseReleaseEvent(QMouseEvent *event)
void setObjectName(const QString &name)
void setSyncGroup(const QString &grp)
Named group which synchronizes collapsing action when triangle is clicked while holding alt modifier ...
void mouseReleaseEvent(QMouseEvent *event) override
bool contains(const QPoint &point, bool proper) const
static QIcon mCollapseIcon
void setSettings(QSettings *settings)
void mousePressEvent(QMouseEvent *event) override
QVariant value(const QString &key, const QVariant &defaultValue) const
QgsCollapsibleGroupBoxBasic(QWidget *parent=nullptr)
virtual void changeEvent(QEvent *ev)
void saveState() const
Will save the collapsed and checked state.
void showEvent(QShowEvent *event) override
void initStyleOption(QStyleOptionGroupBox *option) const
void loadState()
Will load the collapsed and checked state.
void checkToggled(bool ckd)
bool setProperty(const char *name, const QVariant &value)
virtual void mousePressEvent(QMouseEvent *event)
const QPoint & pos() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
virtual bool event(QEvent *e)
QPointer< QSettings > mSettings
void collapseExpandFixes()
Visual fixes for when group box is collapsed/expanded.
QString syncGroup() const
Named group which synchronizes collapsing action when triangle is clicked while holding alt modifier ...