На этом шаге рассмотрим горизонтальное размещение QHBoxLayout.
Объекты класса QHBoxLayout упорядочивают все виджеты только в горизонтальном порядке, слева направо. Его применение аналогично использованию класса QBoxLayout, но передавать в конструктор дополнительный параметр, задающий горизонтальный порядок размещения, не нужно. Окно программы, которая упорядочивает виджеты при помощи объекта класса QHBoxLayout, показано на рис. 1.
Рис.1. Размещение кнопок по горизонтали
#include <QApplication> #include <QWidget> #include <QPushButton> #include <QHBoxLayout> int main(int argc, char** argv) { QApplication app(argc, argv); app.setApplicationDisplayName("QHBoxLayout"); QWidget wgt; //Cоздаются три кнопки A, B и C //(указатели pcmdA, pcmdB и pcmdC) QPushButton* pcmdA = new QPushButton("A"); QPushButton* pcmdB = new QPushButton("B"); QPushButton* pcmdC = new QPushButton("C"); //Создается объект класса QHBoxLayout //для горизонтального размещения дочерних виджетов QHBoxLayout* phbxLayout = new QHBoxLayout; //Метод QLayout::setMargin() устанавливает //толщину рамки 10 пикселов phbxLayout->setMargin(10); //Метод QLayout::setSpacing() задает //расстояние между виджетами равное 20 пикселам phbxLayout->setSpacing(20); //Три вызова метода QLayout::addWidget() добавляют //виджеты кнопок в компоновку phbxLayout->addWidget(pcmdA); phbxLayout->addWidget(pcmdB); phbxLayout->addWidget(pcmdC); wgt.setLayout(phbxLayout); wgt.show(); return app.exec(); }
Файлы примера можно взять здесь.
На следующем шаге рассмотрим вертикальное размещение QVBoxLayout.