Шаг 30.
Библиотека Qt.
Вложенные размещения

    На этом шаге рассмотрим вложенные размещения.

    Размещая одну компоновку в другой, можно создавать размещения практически любой сложности. Для организации вложенных размещений существует метод addLayout(), в который вторым параметром передается фактор растяжения для добавляемой компоновки.

    На рис. 1 показан пример вложенного размещения двух менеджеров компоновки. В компоновку QVBoxLayout помещается компоновка QHBoxLayout.


Рис.1. Вложенное размещение

Содержание файла будет следующее:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Вложенное размещение");
    QWidget wgt;

    QPushButton* pcmdA = new QPushButton("A");
    QPushButton* pcmdB = new QPushButton("B");
    QPushButton* pcmdC = new QPushButton("C");
    QPushButton* pcmdD = new QPushButton("D");

    QVBoxLayout* pvbxLayout = new QVBoxLayout;
    QHBoxLayout* phbxLayout = new QHBoxLayout;
    phbxLayout->setMargin(5);
    phbxLayout->setSpacing(15);
    //В горизонтальную компоновку
    //добавляем виджеты кнопок pcmdC и pcmdD
    phbxLayout->addWidget(pcmdC);
    phbxLayout->addWidget(pcmdD);

    pvbxLayout->setMargin(5);
    pvbxLayout->setSpacing(15);
    //Виджеты кнопок pcmdA и pcmdB по очереди передаются
    //в метод QLayout::addWidget() вертикальной компоновки pvbxLayout
    pvbxLayout->addWidget(pcmdA);
    pvbxLayout->addWidget(pcmdB);
    //При помощи метода QBoxLayout:: addLayout() 
    //передается объект горизонтальной компоновки phbxLayout
    pvbxLayout->addLayout(phbxLayout);
    //Вызов метода QWidget::setLayout() устанавливает
    //вертикальную компоновку pvbxLayout в виджете wgt
    wgt.setLayout(pvbxLayout);
    wgt.show();
    return app.exec();
}

    Файлы примера можно взять здесь.

    На следующем шаге рассмотрим табличное размещение QGridLayout.




Предыдущий шаг Содержание Следующий шаг