QVBoxLayout как добавить спейсерную строку - PullRequest
0 голосов
/ 27 мая 2019

Можно ли добавить строку интервалов в QVBoxLayout? Я попытался использовать QPushButton, а затем скрылся, но это не сработало.

Я хочу, чтобы макет содержал 5 кнопок с интервалом между кнопками 4 и 5.

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Вам не нужно обрабатывать QSpacerItem самостоятельно (в документации перечислены методы, которые вы должны использовать instrad для создания QSpacerItem).

Если вы хотите добавить пробел определенного размера, вы можете использовать QVBoxLayout::addSpacing():

    QWidget* w = new QWidget();
    QVBoxLayout* layout = new QVBoxLayout(w);
    layout->addWidget(new QPushButton("first"));
    layout->addWidget(new QPushButton("second"));
    layout->addWidget(new QPushButton("third"));
    layout->addWidget(new QPushButton("fourth"));
    layout->addSpacing(50);
    layout->addWidget(new QPushButton("fifth"));
    w->show();

Это будет минимальный пробел в 50 пикселей между четвертым и пятым :

enter image description here enter image description here

Если вы хотите поместить кнопку пятую внизу, а остальные вверху, используйте QVBoxLayout::addStretch():

    QWidget* w = new QWidget();
    QVBoxLayout* layout = new QVBoxLayout(w);
    layout->addWidget(new QPushButton("first"));
    layout->addWidget(new QPushButton("second"));
    layout->addWidget(new QPushButton("third"));
    layout->addWidget(new QPushButton("fourth"));
    layout->addStretch(1);
    layout->addWidget(new QPushButton("fifth"));
    w->show();

enter image description here enter image description here

0 голосов
/ 28 мая 2019

Попробуйте добавить QSpacerItem.

QVBoxLayout* layout = new QVBoxLayout;
layout->addWidget(new QPushButton("first"));
layout->addWidget(new QPushButton("second"));
layout->addWidget(new QPushButton("third"));
layout->addWidget(new QPushButton("fourth"));
layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Fixed, QSizePolicy::Expanding));
layout->addWidget(new QPushButton("fifth"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...