@@ -627,6 +627,7 @@ ParametersScrollArea::ParametersScrollArea()
627627 setFrameShape (QFrame::NoFrame);
628628 setBackgroundRole (QPalette::Base);
629629 setWidgetResizable (true );
630+ mGroupBoxesList .clear ();
630631 mpVerticalLayout = new QVBoxLayout;
631632 mpVerticalLayout->setAlignment (Qt::AlignLeft | Qt::AlignTop);
632633 mpWidget->setLayout (mpVerticalLayout);
@@ -662,8 +663,7 @@ QSize ParametersScrollArea::minimumSizeHint() const
662663 */
663664void ParametersScrollArea::addGroupBox (GroupBox *pGroupBox)
664665{
665- if (!getGroupBox (pGroupBox->title ()))
666- {
666+ if (!getGroupBox (pGroupBox->title ())) {
667667 pGroupBox->hide (); /* create a hidden groupbox, we show it when it contains the parameters. */
668668 mGroupBoxesList .append (pGroupBox);
669669 mpVerticalLayout->addWidget (pGroupBox);
@@ -674,12 +674,12 @@ void ParametersScrollArea::addGroupBox(GroupBox *pGroupBox)
674674 Returns the GroupBox by reading the list of GroupBoxes.
675675 \return the GroupBox
676676 */
677- GroupBox* ParametersScrollArea::getGroupBox (QString title)
677+ GroupBox* ParametersScrollArea::getGroupBox (const QString & title)
678678{
679- foreach (GroupBox *pGroupBox, mGroupBoxesList )
680- {
681- if (pGroupBox->title ().compare (title) == 0 )
679+ foreach (GroupBox *pGroupBox, mGroupBoxesList ) {
680+ if (pGroupBox->title ().compare (title) == 0 ) {
682681 return pGroupBox;
682+ }
683683 }
684684 return 0 ;
685685}
@@ -786,8 +786,7 @@ void ElementParameters::setUpDialog()
786786 fetchComponentModifiers ();
787787 fetchExtendsModifiers ();
788788 foreach (Parameter *pParameter, mParametersList ) {
789- ParametersScrollArea *pParametersScrollArea;
790- pParametersScrollArea = qobject_cast<ParametersScrollArea*>(mpParametersTabWidget->widget (mTabsMap .value (pParameter->getTab ())));
789+ ParametersScrollArea *pParametersScrollArea = qobject_cast<ParametersScrollArea*>(mpParametersTabWidget->widget (mTabsMap .value (pParameter->getTab ())));
791790 if (pParametersScrollArea) {
792791 if (!pParameter->getGroupBox ().isEmpty ()) {
793792 GroupBox *pGroupBox = pParametersScrollArea->getGroupBox (pParameter->getGroupBox ());
@@ -839,6 +838,26 @@ void ElementParameters::setUpDialog()
839838 pModifiersTabLayout->addWidget (mpModifiersTextBox);
840839 pModifiersTab->setLayout (pModifiersTabLayout);
841840 mpParametersTabWidget->addTab (pModifiersTab, " Modifiers" );
841+ // Issue #7494. Hide any empty tab.
842+ for (int i = 0 ; i < mpParametersTabWidget->count (); ++i) {
843+ ParametersScrollArea *pParametersScrollArea = qobject_cast<ParametersScrollArea*>(mpParametersTabWidget->widget (i));
844+ if (pParametersScrollArea) {
845+ bool tabIsEmpty = true ;
846+ // The tab is empty if its groupbox layout is empty.
847+ for (int j = 0 ; j < pParametersScrollArea->groupBoxesSize (); ++j) {
848+ GroupBox *pGroupBox = pParametersScrollArea->getGroupBox (j);
849+ if (pGroupBox && !pGroupBox->getGridLayout ()->isEmpty ()) {
850+ tabIsEmpty = false ;
851+ break ;
852+ }
853+ }
854+ // If the tab is empty then remove it and move one step back.
855+ if (tabIsEmpty) {
856+ mpParametersTabWidget->removeTab (i);
857+ --i;
858+ }
859+ }
860+ }
842861 // Create the buttons
843862 mpOkButton = new QPushButton (Helper::ok);
844863 mpOkButton->setAutoDefault (true );
0 commit comments