у меня есть QHBoxLayout
в моей форме с 3 макетами, добавленными к нему. У второго есть пункты, касающиеся моего вопроса.
у меня есть QVBoxLayout
на второй панели основного макета ( QHBoxLayout
).
это QVBoxLayout
имеет QScrollArea
добавлено к нему с addWidget
,
это QScrollArea
является родителем для QWidget
называется «scrollContents», который в свою очередь содержит QGridLayout
,
Я добавляю созданный виджет к этому QGridLayout
который имеет фиксированную высоту. Мы можем рассмотреть это 100px
теперь.
Если это QGridLayout
имеет элементы, общая высота которых меньше, чем сама форма, он центрирует эти виджеты по вертикали с одинаковым пространством между ними.
Если есть один виджет, он появляется прямо посередине. Но я бы хотел, чтобы они были перечислены сверху вниз.
Пример: [### представляет площадь QScrollArea
в котором есть QWidget
с QGridLayout
,
OK -> DESIRED -> NOT DESIRED AND WHAT HAPPENS
########## ########## ##########
# |item| # # |item| # # #
# |item| # # # # #
# |item| # # # # #
# |item| # # # # |item| #
# |item| # # # # #
# |item| # # # # #
# |item| # # # # #
########## ########## ##########
|item|
|item|
|item|
В основном: если есть место для 9 «строк», то, когда добавляется один элемент, он появляется в середине в месте 5-го. Если их 9 или более, они отображаются так, как должны. Если их 8 или меньше, их промежуточное пространство расширяется, чтобы отцентрировать их все.
Как я могу решить это?
Спасибо.
Существует также метод, отличный от того, что ответил trollixx: добавьте фиктивный виджет с его политикой вертикального размера, настроенной на расширение, в нижней части поля. QGridLayout
, Увидеть этот ответ, который также содержит пример с панелью инструментов.
QGridLayout :: addWidget () имеет alignment
параметр. У меня работает следующий код:
gridLayout->addWidget(new QPushButton("Button"), 0, 0, Qt::AlignTop);
Используйте вертикальную прокладку внизу, вот для чего они.