
- •Иерархия объектов в Qt
- •Мета-объектная информация
- •Недостатки и преимущества использования сигналов и слотов
- •Сигналы.
- •Соединение и разъединение объектов.
- •Общие методы управления последовательных контейнеров
- •Методы контейнера qVector
- •Методы контейнера qList:
- •Методы контейнера Qstack:
- •Методы контейнера qQueue:
- •Методы управления ассоциативными контейнерами:
- •Методы контейнера qMap:
- •Методы контейнера qHash:
- •Методы контейнера qSet:
- •Итераторы
- •Итераторы в стиле Java
- •Итераторы в стиле stl
- •Принцип работы с оператором foreach
- •Компоновка виджетов на форме.
- •Разделители
- •Области с прокруткой
Методы контейнера qSet:
intersect() |
удаляет элементы множества не присутствующее в переданном множестве |
reserve() |
задает размер ХЕШ таблицы |
squeeze() |
уменьшает объема внутренней ХЕШ таблицы для уменьшения используемого объема памяти |
subtract() |
удаляет все элементы множества, присутствующие в переданном множестве |
toList() |
возвращает объект контейнера qList, содержащего элементы, находящиеся в объекте контейнера QSet |
unite() |
объединяет элементы множества |
Итераторы
Итераторы предназначены для перемещения по элементам контейнера. Они позволяют абстрагироваться от структуры данных контейнеров.
QT предоставляет 2 стиля итераторов:
итераторы в стиле Java
итераторы в стиле STL
В качестве альтернативы итераторам существует вариант обхода элементов при помощи оператора цикл foreach.
Итераторы в стиле Java
Эти итераторы были разработаны для программистов, не имеющих опыта работы с контейнерами STL.
Основным их отличием является то, что они указывают не на сам элемент, а на двух его соседей. Т.е. в начале итератор будет указывать на положение перед первым элементов контейнера, и с каждый вызовом метода Next() будет перемещать его на одну позицию вперед.
Итераторы в стиле Java представляют собой объекты. Их использование делает код более компактным чем при использовании операторов STL.
Методы QListIterator:
toFront() |
перемещает итератор в начало списка |
toBack() |
перемещает итератор в конец списка |
hasNext() |
возвращает значение true, если итератор не достиг конца списка |
next() |
возвращает значение следующего элемента списка и перемещает итератор на одну позицию дальше |
peekNext() |
просто возвращает следующие значения без изменения позиции итератора |
hasPrevious() |
возвращает значение true, если итератор не достиг начала списка |
peekPrevious() |
просто возвращает предыдущие значения без изменения позиции итератора |
FindNext() |
поиск заданного элемента в прямом направлении |
FindPrevious() |
поиск заданного элемента в обратном направлении |
Если необходимо произвести изменения в процессе прохождения итератором элементов, то для этого необходимо воспользоваться изменяющимися итераторами.
Классы таких итераторов представлены ниже.
QMutableListIterator, QMutableHashIterator, QMutableLinkedListIterator, QMutableMapIterator, QMutableVectorIterator
remove() |
удаляет элемент |
insert() |
производит вставка элемента в текущие позиции |
setValue() |
присваивает конкретному элементы другое значение |
Итераторы в стиле stl
вызов метода begin из объекта контейнера возвращает итератор, указывающий на первый его элемент, а вызов метода end возвращает итератор, указывающий на конец контейнера
операторы ++ и -- объекты итератора производят перемещения на следующий и предыдущий элементы соответственно
При прохождении элементов в обратном порядке (--), необходимо помнить, что оно НЕ аналогично ++ и цикл должен выглядеть иначе.