Табличное размещение QGridLayout

   
На этом шаге рассмотрим табличное размещение элементов в окне.

   
Для табличного размещения используется класс QGridLayout, с помощью которого можно быстро создавать сложные по структуре размещения.

   
Таблица состоит из ячеек, позиции которых задаются строками и столбцами.

ПРИМЕЧАНИЕ. Если вам нужна таблица, которая состоит из 2 столбцов, то можно воспользоваться классом QformLayout, это поможет реализовать более компактный код, чем с использованием класса QGridLayout. Добавления виджетов осуществляются вызовом метода addRow(), в который передаются сразу два виджета: виджет надписи и функциональный виджет.

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

 void QGridLayout::addWidget(QWidget * widget, int row,
                            int column, Qt::Alignment alignment = 0)

   
Иногда необходимо, чтобы виджет занимал сразу несколько позиций, чего можно достичь тем же методом addWidget(), указав в дополнительных параметрах количество строк и столбцов, которые будет занимать виджет. В последнем параметре можно задать выравнивание (табл. 1), например, по центру:

 playout->addWidget(widget, 17, 1, Qt::AlignCenter);

Таблица 1. Значения флагов AlignmentFlag пространства имен Qt

Константа Описание
AlignLeft Расположение текста слева
AlignRight Расположение текста справа
AlignHCenter Центровка текста по горизонтали
AlignJustify Растягивание текста по всей ширине
AlignTop Расположение текста вверху
AlignBottom Расположение текста внизу
AlignVCenter Центровка текста по вертикали
AlignCenter Центровка теста по вертикали и горизонтали

   
Фактор растяжения устанавливается методами setRowStretch() и setColumnStretch(), но не для каждого виджета в отдельности, а для строки или столбца. Расстояние между виджетами также устанавливается для столбцов или строк методом setSpacing().

   
Пример, показанный на рис. 1, размещает четыре кнопки A, B, C и D в таблице размером 2 на 2 ячейки.


Рис.1. Размещение кнопок в таблице 2х2
Содержание файла будет следующим:

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
int main(int argc, char** argv)
{
    //создаем приложение
    QApplication app(argc, argv);
    app.setApplicationDisplayName("Таблица");
    //создаем виджет
    QWidget wgt;
    //создаем 4 кнопки
    QPushButton* pcmdA = new QPushButton("A");
    QPushButton* pcmdB = new QPushButton("B");
    QPushButton* pcmdC = new QPushButton("C");
    QPushButton* pcmdD = new QPushButton("D");
    //создаем таблицу
    QGridLayout* gL = new QGridLayout;
    //выполняем установку параметров
    phbxLayout->setMargin(5);
    phbxLayout->setSpacing(15);
     //добавляем виджеты кнопок в ячейки таблицы
    gL->addWidget(pcmdA, 0, 0);
    gL->addWidget(pcmdB, 0, 1);
    gL->addWidget(pcmdC, 1, 0);
    gL->addWidget(pcmdD, 1, 1);
    //размещаем таблицу в виджете
    wgt.setLayout(gL);
    //отображаем виджет на экране
    wgt.show();
    return app.exec();
}

   
Файлы примера можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий