Компонування (Layouts)
Для того. щоб розумно розмістити віджети на формі, необхідно врахувати ряд деталей:
розмір сусідніх віджетів;
візуальні компоненти можуть динамічно змінювати розмір, приховуватись чи з'являтись внаслідок
роботи логіки програми;
форма, у якій розміщують віджети, може динамічно змінювати розмір під час роботи програми (коли користувач змінює розмір вікна чи розкриває його на весь екран);
часто буває потрібно розтягнути візуальну компоненту таким чином, щоб вона займала увесь простір форми, або ж щоб кілька компонентів займали простір форми пропорційно ( у відповідних пропорціях 1:1, 1:2, 3:5 тощо);
часто буває потрібно розмістити віджети або групи віджетів вертикально чи горизонтально на формі, тощо.
Зрозуміло, що така логіка є досить складною для реалізації при повсякденному створенні інтерфейсів користувача різної структури та складності. На щастя, в арсеналі Qt є досить потужний інструмент для впорядковування віджетів на формі — компонування.
Як працюють компонування
Компонування дає змогу впорядкувати розміщення компонент, у той же час залишаючи інтерфейс гнучким до змін, таких як зміна розміру чи зміна кількості елементів на формі. Також компонування може забезпечувати адекватну зміну розміру самого віджета у відповідь на зміни у його наповненні чи вигляді.
Компонування не належать до віджетів, не успадковують від QWidget та є невидимі на формі. Вони лише керують розміром та розміщенням їх вмісту. Найчастіше використовують три основних компонування:
вертикальне компонування (клас QVBoxLayout);
горизонтальне компонування (клас QHBoxLayout);
компонування сіткою (клас QGridLayout);
Вертикальне (QVBoxLayout) та горизонтальне (QHBoxLayout) компонування.
Для того щоб продемонструвати роботу з компонуваннями, ми створимо новий приклад, додамо кілька елементів та зробимо так, щоб розміщення елементів було пропорційне та відповідало зміні розмірів вікна. Спробуємо створити такий інтерфейс:
мітки та поля вводу розмістимо горизонтально в одному рядку;
створимо два таких рядка з мітками та полями;
додамо ще один рядок з двома кнопками горизонтально, вирівняними за правим краєм вікна.
Створимо проект LayoutExample. Для цього скористаємося майстром нових проектів. Виберемо у списку Qt Gui Application. Задамо назву для проекту та налаштуємо клас головного вікна: задамо батьківський клас (у випадаючому списку Base Class встановимо QWidget) та знімемо прапорець для автоматичної генерації файла форми (Generate Form).
Малюнок 3.13 Створення програми з графічним інтерфейсом користувача.
Відкриємо файл mainwindow.cpp та змінимо код конструктора вікна:
Після запуску програми отримаємо головне вікно з розміщеними у компонуваннях віджетами.
Малюнок Приклад використання горизонтального та вертикального компонувань.
Last updated