Використання контейнерів на прикладі QList

Використання масивів у C++ пов'язане з низкою незручностей. Для їх усунення розроблені класи-сховища, як у стандартній бібліотеці C++, так і в Qt (QVector, QList, QLinkedList, QStack, QQueue, QMap, QMultiMap, QHash і QMultiHash) див. [Далі, розділ 4]. Символи T і K означають, що контейнер можна використовувати для зберігання даних будь-якого типу.

Найбільш універсальним є клас QList. Приклади його використання:

Додати дані можна за допомогою операції направлення до потоку.

Усі контейнери мають спільні методи:

видалити всі елементи

рядок порожній? true, якщо size() == 0

bool isEmpty() const;

Також їм перевантажені оператори порівняння == і !=.

Контейнер QStringList

Клас QStringList є альтернативним визначенням для контейнера QList. Крім того, є кілька додаткових функцій. Рядок може бути розбитий на підрядки за допомогою функції QStringList::split():

QString str = "polluter pays principle";

QStringList words = QStringList::split(" ", str);

У цьому прикладі рядок "polluter pays principle" розбивається на три рядки; "polluter", "pays" та "principle". Функція split() може приймати третій необов'язковий параметр типу bool, який визначає – чи повинні ігноруватися порожні підрядки (за умовчанням) чи ні.

Елементи списку QStringList можуть бути об'єднані в один рядок за допомогою функції join(). Як аргумент їй передається рядок, який має бути вставлений між рядками, що об'єднуються. Наприклад, наступний код демонструє, як можна об'єднати всі рядки у списку, відсортованому за алфавітом, у єдиний рядок, причому підрядки відокремлюються один від одного символом перекладу рядка:

Ще одна важливаоперація над рядками – визначення довжини рядка. Для цього призначена функція length() і, як варіант, isEmpty(), яка повертаєtrue, якщо довжина рядка дорівнює 0.

прикладі

Малюнок – вікно Qt Designer

QDesigner містить інструменти для створення слотів об'єктів, перевизначення віджетів на формі та формування меню.

Елементи формування

Елементи управління

Кнопки (Button)