15 #include <QDialogButtonBox>
16 #include <QPushButton>
34 mMenuButton->setStyleSheet( QStringLiteral(
"QToolButton::menu-indicator { image: none; }" ) );
43 Qt::UniqueConnection );
44 mStackedWidget->insertWidget( 0, panel );
45 mStackedWidget->setCurrentIndex( 0 );
51 return qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( 0 ) );
59 QWidget *widget = mStackedWidget->widget( 0 );
60 mStackedWidget->removeWidget( widget );
61 return qobject_cast<QgsPanelWidget *>( widget );
66 for (
int i = mStackedWidget->count() - 1; i >= 0; i-- )
68 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
70 mStackedWidget->removeWidget( panelWidget );
71 if ( panelWidget->autoDelete() )
73 panelWidget->deleteLater();
76 else if ( QWidget *widget = mStackedWidget->widget( i ) )
78 mStackedWidget->removeWidget( widget );
79 widget->deleteLater();
86 this->updateBreadcrumb();
91 return qobject_cast<QgsPanelWidget *>( mStackedWidget->currentWidget() );
96 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
98 if ( widget->applySizeConstraintsToStack() )
99 return widget->sizeHint();
101 return QWidget::sizeHint();
106 if (
const QgsPanelWidget *widget = qobject_cast<const QgsPanelWidget *>( mStackedWidget->currentWidget() ) )
108 if ( widget->applySizeConstraintsToStack() )
109 return widget->minimumSizeHint();
112 return QWidget::minimumSizeHint();
118 if ( mStackedWidget->currentIndex() <= 0 )
128 setUpdatesEnabled(
false );
129 mStackedWidget->setUpdatesEnabled(
false );
131 for (
int i = mStackedWidget->count() - 1; i > 0; --i )
133 if (
QgsPanelWidget *panelWidget = qobject_cast<QgsPanelWidget *>( mStackedWidget->widget( i ) ) )
135 panelWidget->acceptPanel();
138 setUpdatesEnabled(
true );
139 mStackedWidget->setUpdatesEnabled(
true );
149 const int index = mStackedWidget->addWidget( panel );
150 mStackedWidget->setCurrentIndex( index );
161 mStackedWidget->setCurrentIndex( mStackedWidget->currentIndex() - 1 );
162 mStackedWidget->removeWidget( panel );
165 panel->deleteLater();
168 if ( mStackedWidget->currentIndex() == 0 )
178 this->updateBreadcrumb();
183 if ( e->button() == Qt::BackButton )
191 if ( e->key() == Qt::Key_Escape )
197 void QgsPanelWidgetStack::updateBreadcrumb()
200 const auto constMTitles = mTitles;
201 for (
const QString &title : constMTitles )
203 breadcrumb += QStringLiteral(
" %1 >" ).arg( title );
206 breadcrumb.chop( 1 );
207 mTitleText->setText( breadcrumb );
210 void QgsPanelWidgetStack::updateMenuButton()
214 mMenuButton->setVisible(
true );
215 mMenuButton->setToolTip(
currentPanel()->menuButtonTooltip() );
216 mMenuButton->setMenu( menu );
220 mMenuButton->setVisible(
false );