Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_GIIS.docx
Скачиваний:
7
Добавлен:
01.03.2025
Размер:
120 Кб
Скачать
☆

5. Библиотека qt. Компоновка виджетов.

Все подклассы QWidget могут использовать компоновки для управления своими дочерними элементами. ФункцияQWidget::setLayout() привязывает компоновку к виджету. Когда компоновка установлена на виджете этим способом, она принимает на себя управление следующими задачами:

-Позиционирование дочерних виджетов.

-По умолчанию устанавливаются разумные размеры окон.

-Разумные минимальные размеры окон.

-Обработка изменения размеров.

-Автоматическое обновление, когда содержимое изменилось:

-Размера шрифта, текста или другого содержимого дочерних виджетов.

-Сокрытие или отображение дочерних виджетов.

-Удаление дочерних виджетов.

Самый легкий способ задания правильного расположения виджетов состоит в использовании встроенных менеджеров компоновки: QHBoxLayout, QVBoxLayout, QGridLayout и QFormLayout.

ПРИМЕР:

QWidget *window = new QWidget;

QPushButton *button1 = new QPushButton("One");

QHBoxLayout *layout = new QHBoxLayout;

layout->addWidget(button1);

layout->addWidget(button2);

layout->addWidget(button3);

window->setLayout(layout);

window->show();

6. Библиотека qt. Управление компоновкой. Абсолютное позиционирование.

Абсолютное позиционирование является самым негибким способом компоновки виджетов. Он предусматривает жесткое кодирование в программе размеров и позиций дочерних виджетов формы и фиксированный размер самой формы. Ниже показано, какой вид принимает конструктор FindFileDialog при применении абсолютного позиционирования:

FindFileDialog::FindFileDialog(QWidget *parent): QDialog(parent)

{

namedLabel->setGeometry(9, 9, 50, 25);

namedLineEdit->setGeometry(65, 9, 200, 25);

lookInLabel->setGeometry(9, 40, 50, 25);

lookInLineEdit->setGeometry(65, 40, 200, 25);

subfoldersCheckBox->setGeometry(9, 71, 256, 23);

tableWidget->setGeometry(9, 100, 256, 100);

messageLabel->setGeometry(9, 206, 256, 25);

findButton->setGeometry(271, 9, 85, 32);

stopButton->setGeometry(271, 47, 85, 32);

closeButton->setGeometry(271, 84, 85, 32);

helpButton->setGeometry(271, 199, 85, 32);

setWindowTitle(tr("Find Files or Folders"));

setFixedSize(365, 240);

}

пользователь не может изменить размер окна;

некоторый текст может оказаться отсеченным;

расчет позиций и размеров производиться вручную

7. Библиотека qt. Управление компоновкой. Собственный алгоритм.

Альтернативой ручной компоновке является написание собственного менеджера компоновки создав подкласс QLayout.

При написании класса компоновки нужно определить:

- Структуру данных для хранения элементов обрабатывается компоновщиком. Каждый элемент является QLayoutItem.

- addItem() определяет, как добавляются записи в компоновщик.

- setGeometry() определяет расположение компоновщика.

- sizeHint() предпочитаемый размер компоновщика.

- itemAt() определяет, как перебираются элементы компоновщика.

- takeAt() определяет, как удаляются элементы из компоновщика.

В большинстве случаев, вы также должны реализовать minimumSize().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]