0

I have a grid layout where the widgets look like this: enter image description here

The 3 vertical sections are qscroll areas

Now, when I hide the top button it looks like this: enter image description here

How do I get the buttons in the scroll areas to stay put when I hide the top button, instead of stretching up?

Here is the auto generated ui designer code:

    /********************************************************************************
** Form generated from reading UI file 'designerth4586.ui'
**
** Created by: Qt User Interface Compiler version 5.9.5
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef DESIGNERTH4586_H
#define DESIGNERTH4586_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QScrollArea>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Form
{
public:
    QGridLayout *gridLayout_4;
    QPushButton *pushButton;
    QScrollArea *scrollArea;
    QWidget *scrollAreaWidgetContents_6;
    QVBoxLayout *verticalLayout;
    QPushButton *pushButton_3;
    QPushButton *pushButton_5;
    QPushButton *pushButton_2;
    QPushButton *pushButton_4;
    QScrollArea *scrollArea_2;
    QWidget *scrollAreaWidgetContents_7;
    QVBoxLayout *verticalLayout_2;
    QPushButton *pushButton_7;
    QPushButton *pushButton_6;
    QPushButton *pushButton_9;
    QPushButton *pushButton_8;
    QScrollArea *scrollArea_3;
    QWidget *scrollAreaWidgetContents_8;
    QVBoxLayout *verticalLayout_3;
    QPushButton *pushButton_13;
    QPushButton *pushButton_11;
    QPushButton *pushButton_10;
    QPushButton *pushButton_12;

    void setupUi(QWidget *Form)
    {
        if (Form->objectName().isEmpty())
            Form->setObjectName(QStringLiteral("Form"));
        Form->resize(743, 851);
        gridLayout_4 = new QGridLayout(Form);
        gridLayout_4->setObjectName(QStringLiteral("gridLayout_4"));
        pushButton = new QPushButton(Form);
        pushButton->setObjectName(QStringLiteral("pushButton"));
        QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(1);
        sizePolicy.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());
        pushButton->setSizePolicy(sizePolicy);

        gridLayout_4->addWidget(pushButton, 0, 0, 1, 3);

        scrollArea = new QScrollArea(Form);
        scrollArea->setObjectName(QStringLiteral("scrollArea"));
        scrollArea->setWidgetResizable(true);
        scrollAreaWidgetContents_6 = new QWidget();
        scrollAreaWidgetContents_6->setObjectName(QStringLiteral("scrollAreaWidgetContents_6"));
        scrollAreaWidgetContents_6->setGeometry(QRect(0, 0, 236, 549));
        verticalLayout = new QVBoxLayout(scrollAreaWidgetContents_6);
        verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
        pushButton_3 = new QPushButton(scrollAreaWidgetContents_6);
        pushButton_3->setObjectName(QStringLiteral("pushButton_3"));

        verticalLayout->addWidget(pushButton_3);

        pushButton_5 = new QPushButton(scrollAreaWidgetContents_6);
        pushButton_5->setObjectName(QStringLiteral("pushButton_5"));

        verticalLayout->addWidget(pushButton_5);

        pushButton_2 = new QPushButton(scrollAreaWidgetContents_6);
        pushButton_2->setObjectName(QStringLiteral("pushButton_2"));

        verticalLayout->addWidget(pushButton_2);

        pushButton_4 = new QPushButton(scrollAreaWidgetContents_6);
        pushButton_4->setObjectName(QStringLiteral("pushButton_4"));

        verticalLayout->addWidget(pushButton_4);

        scrollArea->setWidget(scrollAreaWidgetContents_6);

        gridLayout_4->addWidget(scrollArea, 1, 0, 1, 1);

        scrollArea_2 = new QScrollArea(Form);
        scrollArea_2->setObjectName(QStringLiteral("scrollArea_2"));
        scrollArea_2->setWidgetResizable(true);
        scrollAreaWidgetContents_7 = new QWidget();
        scrollAreaWidgetContents_7->setObjectName(QStringLiteral("scrollAreaWidgetContents_7"));
        scrollAreaWidgetContents_7->setGeometry(QRect(0, 0, 235, 549));
        verticalLayout_2 = new QVBoxLayout(scrollAreaWidgetContents_7);
        verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
        pushButton_7 = new QPushButton(scrollAreaWidgetContents_7);
        pushButton_7->setObjectName(QStringLiteral("pushButton_7"));

        verticalLayout_2->addWidget(pushButton_7);

        pushButton_6 = new QPushButton(scrollAreaWidgetContents_7);
        pushButton_6->setObjectName(QStringLiteral("pushButton_6"));

        verticalLayout_2->addWidget(pushButton_6);

        pushButton_9 = new QPushButton(scrollAreaWidgetContents_7);
        pushButton_9->setObjectName(QStringLiteral("pushButton_9"));

        verticalLayout_2->addWidget(pushButton_9);

        pushButton_8 = new QPushButton(scrollAreaWidgetContents_7);
        pushButton_8->setObjectName(QStringLiteral("pushButton_8"));

        verticalLayout_2->addWidget(pushButton_8);

        scrollArea_2->setWidget(scrollAreaWidgetContents_7);

        gridLayout_4->addWidget(scrollArea_2, 1, 1, 1, 1);

        scrollArea_3 = new QScrollArea(Form);
        scrollArea_3->setObjectName(QStringLiteral("scrollArea_3"));
        QSizePolicy sizePolicy1(QSizePolicy::Expanding, QSizePolicy::Expanding);
        sizePolicy1.setHorizontalStretch(0);
        sizePolicy1.setVerticalStretch(2);
        sizePolicy1.setHeightForWidth(scrollArea_3->sizePolicy().hasHeightForWidth());
        scrollArea_3->setSizePolicy(sizePolicy1);
        scrollArea_3->setWidgetResizable(true);
        scrollAreaWidgetContents_8 = new QWidget();
        scrollAreaWidgetContents_8->setObjectName(QStringLiteral("scrollAreaWidgetContents_8"));
        scrollAreaWidgetContents_8->setGeometry(QRect(0, 0, 236, 549));
        verticalLayout_3 = new QVBoxLayout(scrollAreaWidgetContents_8);
        verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3"));
        pushButton_13 = new QPushButton(scrollAreaWidgetContents_8);
        pushButton_13->setObjectName(QStringLiteral("pushButton_13"));

        verticalLayout_3->addWidget(pushButton_13);

        pushButton_11 = new QPushButton(scrollAreaWidgetContents_8);
        pushButton_11->setObjectName(QStringLiteral("pushButton_11"));

        verticalLayout_3->addWidget(pushButton_11);

        pushButton_10 = new QPushButton(scrollAreaWidgetContents_8);
        pushButton_10->setObjectName(QStringLiteral("pushButton_10"));

        verticalLayout_3->addWidget(pushButton_10);

        pushButton_12 = new QPushButton(scrollAreaWidgetContents_8);
        pushButton_12->setObjectName(QStringLiteral("pushButton_12"));

        verticalLayout_3->addWidget(pushButton_12);

        scrollArea_3->setWidget(scrollAreaWidgetContents_8);

        gridLayout_4->addWidget(scrollArea_3, 1, 2, 1, 1);


        retranslateUi(Form);
        QObject::connect(pushButton, SIGNAL(clicked()), pushButton, SLOT(hide()));

        QMetaObject::connectSlotsByName(Form);
    } // setupUi

    void retranslateUi(QWidget *Form)
    {
        Form->setWindowTitle(QApplication::translate("Form", "Form", Q_NULLPTR));
        pushButton->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_3->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_5->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_2->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_4->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_7->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_6->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_9->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_8->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_13->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_11->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_10->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
        pushButton_12->setText(QApplication::translate("Form", "PushButton", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    class Form: public Ui_Form {};
} // namespace Ui

QT_END_NAMESPACE

#endif // DESIGNERTH4586_H
bbbbbbbbb9
  • 33
  • 5
  • @JarMan edited to include minimal, reproducible example. – bbbbbbbbb9 Mar 02 '21 at 00:52
  • So you want the large push button at the top to keep occupying its space when it is hidden? See [Hiding Qt widget and keeping widget space](https://stackoverflow.com/questions/1874426/hiding-qt-widget-and-keeping-widget-space). – m7913d Mar 02 '21 at 01:11
  • SOLVED: I figured it out, my qscrollarea's maximum height wasn't set to 16777215, also I had to replace the qscrollarea with a qframe, and put a vertical spacer on the top of the items within it – bbbbbbbbb9 Mar 02 '21 at 01:30

1 Answers1

0

Try to use vertical spacer item with height==0 in additional vertical layout :

--------
 spacer
--------
TTTTTTTT
TTTTTTTT
TTTTTTTT
11223333
11223333
11223333
11223333
--------