- •Иерархия объектов в Qt
- •Мета-объектная информация
- •Недостатки и преимущества использования сигналов и слотов
- •Сигналы.
- •Соединение и разъединение объектов.
- •Общие методы управления последовательных контейнеров
- •Методы контейнера qVector
- •Методы контейнера qList:
- •Методы контейнера Qstack:
- •Методы контейнера qQueue:
- •Методы управления ассоциативными контейнерами:
- •Методы контейнера qMap:
- •Методы контейнера qHash:
- •Методы контейнера qSet:
- •Итераторы
- •Итераторы в стиле Java
- •Итераторы в стиле stl
- •Принцип работы с оператором foreach
- •Компоновка виджетов на форме.
- •Разделители
- •Области с прокруткой
Принцип работы с оператором foreach
C использованием этого ключевого слова можно перебрать все элементы контейнера. Данное ключевое слово является альтернативой использованию итератора.
При использовании foreach, так же, как и циклах, можно применять ключевые слова break и continue, а также использовать разные уровни вложенности циклов.
Компоновка виджетов на форме.
Существует три способа управления компоновкой дочерних виджетов формы:
абсолютное позиционирования
ручная компоновка
применение менеджеров компоновки
Абсолютное позиционирование является самым не гибким способом компоновки виджетов. Оно предусматривает жесткое кодирование в программе размеров и позиции дочерних виджетов формы и фиксированный размер самой формы.
Абсолютное позиционирование имеет следующие недостатки:
- пользователь не может изменять размер окна
- некоторый текст может оказаться отсеченным, если пользователь выбирает необычно большой шрифт или если приложение переводится на другой язык
- виджеты могут иметь неправильные размеры для некоторых стилей
- расчет позиции и размеров должен производится вручную
При ручной компоновке виджетам все равно присваиваются абсолютные позиции, но размеры виджетов становятся пропорциональны размеру окна, а не жестко кодируются в программе. Такой способ достигается путем переопределения функции формы resizeEvent() для установки геометрических размеров своих дочерних виджетов.
Самый удобный метод компоновки виджетов на форме – это использование менеджеров компоновки QT. Менеджеры компоновки используют осмысленные, принимаемые по умолчанию значения параметров для каждого типа виджета и учитывают идеальный размер каждого виджета, которые в свою очередь обычно зависят от шрифта виджета, его стиля и содержимого. Менеджеры компоновки также учитывают максимальные и минимальные размеры и автоматически подстраивают компоновку в ответ на изменение шрифта, изменение содержимого и изменение размеров окна.
Перечислим 3 наиболее важных менеджера компоновки:
* QHBoxLayout;
* QVBoxLayout;
* QGridLayout;
Класс QHBoxLayout выстараивает виджеты в горизонтальную линию. Данный класс используется для создания горизонтального ряда из выравниваемых объектов.
Класс QVBoxLayout выстраивает виджеты в вертикальную линию. Данный класс используется для создания вертикального ряда из выравниваемых объектов.
Класс QGridLayout выравнивает виджеты по сетке. QGridLayout занимает отведенное ему место, разбивает его на строки и столбцы и помещает каждый подконтрольный виджет в соответствующую ячейку.
Класс QStackedLayout управляет компоновкой набора дочерних виджетов или страниц, показывая в каждый конкретный момент только одну из них и скрывая от пользователя остальные. Сам менеджер остается невидимым и не содержит внутри себя средств для пользователя на изменение страницы.
Политика размера виджета говорит системе компоновки, как его следует растягивать или сжимать. Ниже приведены наиболее полезные значения компонентов:
Fixed – означает, что виджет не может увеличиваться или сжиматься. Размер виджета всегда сохраняет свое идеальное значение.
Minimum – означает, что идеальный размер виджета является его минимальным размером
Maximum – означает, что идеальный размер виджета является его максимальным размером.
Preferred – означает, что идеальный размер виджета является его предпочтительным размером, но виджет может при необходимости сжиматься или растягиваться.
Expanding – означает, что виджет может сжиматься или растягиваться, но в первую очередь он стремится увеличить свой размер.