На этом шаге рассмотрим табличное размещение элементов в окне.
Для табличного размещения используется класс QGridLayout, с помощью которого можно быстро создавать сложные по структуре размещения.
Таблица состоит из ячеек, позиции которых задаются строками и столбцами.
Добавить виджет в таблицу можно с помощью метода addWidget(), передав ему позицию ячейки, в которую помещается виджет.
void QGridLayout::addWidget(QWidget * widget, int row, int column, Qt::Alignment alignment = 0)
Иногда необходимо, чтобы виджет занимал сразу несколько позиций, чего можно достичь тем же методом addWidget(), указав в дополнительных параметрах количество строк и столбцов, которые будет занимать виджет. В последнем параметре можно задать выравнивание (табл. 1), например, по центру:
playout->addWidget(widget, 17, 1, Qt::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(); }
Файлы примера можно взять здесь.
На следующем шаге рассмотрим пример создания калькулятора.