Проектный файл
Сигналы/Слоты
Объектная иерархия
Глобальные определения Qt
Контейнеры в Qt
Строки QString
Проектный файл:
Обозначение библиотек в проектном файле:
| Библиотека | Обозначение в проектном файле |
|---|---|
| QtCore | core |
| QtGui | gui |
| QtWidgets | widgets |
| QtQuick | quick1 |
| QtQML | qml |
| QtNetwork | network |
| QLOpenGL | opengl |
| QtSql | sql |
| QtSvg | svg |
| QtXml | xml |
| QtXmlPatterns | xmlpatterns |
| QtScript | script |
| QtScriptTools | scripttools |
| QtMultimedia | multimedia |
| QtMultimediaWidgets | Multimediawidgets |
| QtWebKit | webkit |
| QtWebKitWidgets | webkitwidgets |
| QPrintSupport | printsupport |
| QtTest | test |
Опции проектного файла :
| Опция | назначение |
|---|---|
| HEADERS | Список созданных заголовочных файлов. |
| SOURCES | Список созданных файлов реализации(с расширением cpp) |
| FORMS | Список файлов с расширением ui. |
| TARGET | Имя приложения |
| LIBS | Список библиотек, которые должны быть подключены для создания исполняемого модуля. |
| CONFIG | Задаёт опции которые должен использовать компилятор. |
| DESTDIR | Задаёт путь, куда будет помещён готовый исполняемый модуль. |
| DEFINED | Передать опции для компилятора. |
| INCLUDEPATH | Путь к каталогу, где содержаться заголовочные файлы. |
| DEPENDPATH | Раздел для указания зависимостей, необходимых для компиляции. |
| SUBDIRS | Имена подкаталогов, которые содержат pro-файлы. |
| TEMPLATE | Задает разновидность проекта. |
| TRANSLATIONS | Задает файлы переводов, используемые в проекте. |
Сигналы/Слоты:
Шаблон класса использующего слоты и сигналы.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class 'имя класса' : public 'класс наследованный от QObject' { Q_OBJECT //макрос указывает на использовании сигналов и слотов в классе public: 'открытые функции и переменные класса' public slots: 'открытые слоты класса' void 'имя слота'('параметры слота'); signals: 'сигналы класса' void 'имя сигнала'('параметры сигнала'); private: 'закрытые функции и переменные класса' private slots: 'закрытые слоты класса' void 'имя слота'('параметры слота'); } |
Определение слота:
|
1 2 3 4 |
void 'имя класса'::'имя слота'('параметры слота') { 'тело слота'; } |
Послать сигнал:
|
1 |
emit 'имя сигнала' ('параметр'); |
Соединение сигнала и слота:
|
1 2 |
QObject::connect(&'имя объекта содержащего сигнал',&'имя типа объекта содержащего сигнал'::'имя сигнала', &'имя объекта содержащего слот',&'имя типа объекта содержащего слот'::'имя слота'); |
или
|
1 2 |
QObject::connect(&'имя объекта содержащего сигнал',SIGNAL('имя сигнала'('параметры сигнала')), &'имя объекта содержащего слот',SLOT('параметры слота')); |
Соединение двух сигналов в объекте унаследованном от QObject:
|
1 2 |
connect(SIGNAL('имя сигнала1'('параметры сигнала1')), SIGNAL('имя сигнала2'('параметры сигнала2'))); |
Разъединение сигнала и слота:
|
1 2 |
QObject::disconnect(&'имя объекта содержащего сигнал',&'имя типа объекта содержащего сигнал'::'имя сигнала', &'имя объекта содержащего слот',&'имя типа объекта содержащего слот'::'имя слота'); |
или
|
1 2 |
QObject::disconnect(&'имя объекта содержащего сигнал',SIGNAL('имя сигнала'('параметры сигнала')), &'имя объекта содержащего слот',SLOT('параметры слота')); |
Заблокировать отправку сигналов:
|
1 |
blockSignals(false); |
Разблокировать отправку сигналов:
|
1 |
blockSignals(true); |
Проверить состояние сигналов:
|
1 |
signalsBlocked() |
Объектная иерархия.
Объявление объекта :
|
1 |
'класс объекта'* 'имя объекта' = new 'класс объекта'('указатель на объект предка'); |
Если предка нет, объект является объектом верхнего уровня.
Таблица методов, для просмотра иерархии классов:
Перед выполнением команды из примера выполняется следующий код:
|
1 2 3 4 5 6 7 8 |
QObject* obj1 = new QObject; QObject* obj2 = new QObject(obj1); QObject* obj3 = new QObject(obj1); QObject* obj4 = new QObject(obj2); obj1->setObjectName("Object name 1"); obj2->setObjectName("Object name 2"); obj3->setObjectName("Object name 3"); obj4->setObjectName("Object name 4"); |
| Метод объекта | Описание | Пример |
|---|---|---|
| setObjectName('отладочное имя объекта'); | Задать имя объекта для отладки программы | obj1 -> setObjectName(«Object name»);//obj1 -> ObjectName() = «Object name» |
| ObjectName() | Получить имя объекта для отладки программы | QString SNam = obj1 -> objectName(); //SNam = «Object name 1» |
| parent() | Возвращает указатель на объект-предка | QObject* obj = obj2 -> parent(); //obj = obj1 |
| children() | Возвращает указатель на объект-потомок | QObjectList Lobj = obj1->children();//Lobj содержит объекты obj2 и obj3 |
| dumpObjectTree() | Возвращает в поток вывода stdout дерево объектов-потомков | obj1 -> dumpObjectTree();//В stdout выведется: QObject::Object name 1 QObject::Object name 2 QObject::Object name 4 QObject::Object name 3 |
| dumpObjectInfo() | Возвращает в поток вывода stdout информацию об объекте. Имя объекта, класс от которого был создан объект, сигнально-слотовые соединения. | obj2 -> dumpObjectInfo();//В stdout выведется: OBJECT QObject::Object name 2 SIGNALS OUT <None> SIGNALS IN <None> |
Глобальные определения Qt
Типы переменных Qt
| Тип Qt | Эквивалент C++ | Размер в битах |
|---|---|---|
| qint8 | signed char | 8 |
| quint8 | unsigned char | 8 |
| qint16 | short | 16 |
| quint16 | unsigned short | 16 |
| qint32 | int | 32 |
| quint32 | unsigned int | 32 |
| qint64 | __int64 или long long | 64 |
| quint64 | unsigned __int64 или unsigned long long | 64 |
| qlonglong | Тоже самое, что и qint64 | 64 |
| qulonglong | Тоже самое, что и quint64 | 64 |
| qreal | Тоже самое,что и double | 64 |
| uchar | Тоже самое,что и unsigned char | 8 |
Функции Qt:
| Функции | Описание | Пример |
|---|---|---|
| const char * qVersion() | Возвращает версию библиотеки | qDebug()<<qVersion(); |
| const T & qMax(const T & v1, const T & v2) | Возвращает максимальное значение из v1 и v2 | int n = qMax<int>(3,5); // n = 5 |
| const T & qMin(const T & v1, const T & v2) | Возвращает минимальное значение из v1 и v2 | int n = qMin<int>(3,5); // n = 3 |
| T qAbs(const T & v) | Возвращает абсолютное значение v | int n = qAbs(-5); // n = 5 |
| int qRound(qreal v) qint64 qRound64(qreal v) |
Возвращает округлённое значение v | int n = qRound(5.7); // n = 6 int n = qRound(-5.7); // n = -6 |
| const T & qBound(const T & v1,const T & v2,const T & v3) | Возвращает значение между минимом и максимумом | int n = qBound(2,12,7);//n = 7 int n = qBound(1,7,7);//n = 7 |
| bool qFuzzyCompare(float f1,float f2) bool qFuzzyCompare(double d1, double d2) |
Сравнение двух значений с плавающей точкой. | bool b = qFuzzyCompare(1.0,1.0); //b = true |
| quint32 qFloatDistance(float f1,float f2) quint64 qFloatDistance(double d1, double d2) |
Возвращает кол-во чисел, которые можно расположить между 1 и 2 переменной | float f1=1.10001,f2=1.10002; quint32 n = qFloatDistance(f1,f2); // n = 84 |
| bool qIsFinite(double d) bool qIsFinite(float f) |
Возвращает истину, если параметр число. | float f1; f1 = sqrt(-13); //f1 = nan qIsFinite(f1);//false |
| double qInf() | Функция возвращающая бесконечность. | float f1 = 1/qInf(); //f1 = 0 f1 = qInf()/qInf(); //f1 = nan |
| bool qIsInf(double d) bool qIsInf(float f) |
Функция возвращает true если параметр равен бесконечности | bool b=qIsInf(qInf());//b=true |
| double qQNaN() | Функция возвращает значение quiet NaN (не исчеслимо) | float f=qQNaN(); //f = nan |
| double qSNaN() | Функция возвращает значение signalling NaN (не исчеслимо) | float f=qSNaN(); //f = nan |
| bool qIsNaN(double d) bool qIsNaN(float f) |
Функция возвращает true если параметр не исчислим | float f1 =sqrt(-13); bool b=qIsNaN(f1); |
Контейнеры в Qt:
Последовательные контейнеры:
| имя класса | название класса |
|---|---|
| QVector<T> | вектор |
| QList<T> | список |
| QLinkedList<T> | двусвязный список |
| QStack<T> | стек |
| QQueue<T> | очередь |
Ассоциативные контейнеры:
| имя класса | название класса |
|---|---|
| QSet<T> | множество |
| QMap<K,T> | словарь |
| QltiMap<K,T> | мультисловарь |
| QHash<K,T> | хэш |
| QMultiUash<K,T> | мультихэш |
Операторы контейнерных классов:
| Оператор/Меторд | Описание |
|---|---|
| == | Операторы сравнения равно |
| != | Операторы сравнения не равно |
| = | Операторы присваивания |
| [] | Операторы индексации. QSet<T> и QLinkedList<T> не поддреживают оператор. |
| begin() и constBegin() | Методы возвращающие интераторы, установленные на начало последовательности элементов контейнера. Для класса QSet<T> возвращает только константные значения. |
| end() и constEnd() | Методы возвращающие константные интераторы, установленные на конец последовательности элементов контейнера. |
| clear() | Удаление всех элементов контейнера. |
| insert() | Операция вставки элементов в контейнер. |
| remove() | Операция удаления элементов из контейнера. |
| size() и count() | Возвращают кол-во элементов контейнера. Предпочтительней size(), так как соответствует STL. |
| value() | Возвращает элемент контейнера в QSet<T> не определён. |
| empty() и isEmpty() | Возвращают true, если контейнер не содержит ни одного элемента.Предпочтительней empty(), так как соответствует STL. |
Интераторы в стиле Java:
QListInterator — Интератор на чтение,QMutableListInterator на запись.
Список интераторов в стиле Java:
Q[Mutable]ListInterator, Q[Mutable]linkedListInterator, Q[Mutable]VectorInterator, Q[Mutable]HashInterator, Q[Mutable]MapInterator, Q[Mutable]SetInterator
Пример использования:
|
1 2 3 4 5 6 |
QList<Qstring> list; list<<"1"<<"2"<<"3"; QListInterator<QString> it(list); while (it.hasNext()){ qDebug()<<it.next(); } |
Методы для итераторов
Q[Mutable]ListInterator, Q[Mutable]linkedListInterator, Q[Mutable]VectorInterator, Q[Mutable]HashInterator, Q[Mutable]MapInterator, Q[Mutable]SetInterator
| Методы | Описание |
|---|---|
| toFront() | Перемещает интератор на начало списка. |
| toBack() | Перемещает интератор на конец списка. |
| hasNext() | возвращает значение true, если интератор не находится в конце списка. |
| next() | Возвращает значение следующего элемента списка и перемещает интератор на следующую позицию. |
| peekNext() | Возвращает значение следующего элемента списка, без изменения позиции интератора. |
| hasPrevious() | Возвращает значение true, если интератор не находится в начале списка. |
| previous() | Возвращает значение предыдущего элемента списка и перемещает интератор на предыдущую позицию. |
| peekPrevious() | Возвращает значение предыдущего элемента списка, без изменения позиции интератора. |
| findNext(const T&) | Поиск заданного элемента в прямом направлении. |
| findPrecious(const T&) | Поиск заданного элемента в обратном направлении. |
Методы для итераторов
QMutableListInterator, QMutablelinkedListInterator, QMutableVectorInterator, QMutableHashInterator, QMutableMapInterator, QMutableSetInterator
| remove() | Удаляет текущий элемент. |
|---|---|
| insert() | Вставить элемент на текущую позицию. |
| setValue() | Присвоить элементу значение. |
Интераторы в стиле STL
Двигаемся вперёд, по контейнеру:
|
1 2 3 4 5 6 |
QVector<QString> vec; vec<<"1"<<"2"<<"3"; QVector<QString>::interator it = vec.begin(); for(; it != vec.end(); ++it){ qDebug()<<"El:"<< *it; } |
Двигаемся назад по контейнеру:
|
1 2 3 4 5 6 7 |
QVector<QString> vec; vec<<"1"<<"2"<<"3"; QVector<QString>::interator it = vec.end(); for(; it != vec.begin();){ --it; qDebug()<<"El:"<< *it; } |
Если значение не меняется эффективнее использовать константные итераторы:
|
1 2 3 4 5 6 |
QVector<QString> vec; vec<<"1"<<"2"<<"3"; QVector<QString>::const_interator it = vec.constBegin(); for(; it != vec.constEnd(); ++it){ qDebug()<<"El:"<< *it; } |
foreach — изменения в нём не влияют на на оригинальный контейнер.
|
1 2 3 4 5 |
QList<Qstring> list; list<<"1"<<"2"<<"3"; foreach(QString str, list){ qDebug()<<"El:"<<str; } |
Последовательные контейнеры:
Методы последовательных контейнеров:
| Оператор/метод | Описание |
|---|---|
| + | Объединяет элементы двух контейнеров |
| += и << | Добавляет элемент в контейнер. |
| at() | Возвращает указанный элемент. |
| back() и last() | Возвращает ссылку на последний элемент.Применение back() предпочтительней, так как он соответствует STL. |
| contains() | Проверяет, содержится ли переданный в качестве параметра элемент в контейнере. |
| erase() | Удаляет элемент, расположенный на позиции интератора, передаваемого в качестве параметра. |
| front() и first() | Возвращает ссылку на первый элемент контейнера.Применение front() предпочтительней, так как он соответствует STL. |
| indexOf() | Возвращает позицию первого совпадения найденного в контейнере элемента в соответствии с переданным в метод значением. В контейнере LinkedList этот метод отсутствует. |
| lastIndexOf() | Возвращает позицию последнего совпадения найденного в контейнере элемента в соответствии с переданным в метод значением. В контейнере LinkedList этот метод отсутствует. |
| mid() | Возвращает контейнер, содержащий копии элементов, задаваемых начальной позицией и количеством |
| pop_back() | Удаляет последний элемент контейнера. |
| pop_front() | Удаляет первый элемент контейнера. |
| push_back() и append() | Методы добавляют один элемент в конец контейнера.Применение push_back() предпочтительней, так как он соответствует STL. |
| push_frotn() и prepend() | Методы добавляют один элемент в начало контейнера.Применение push_frotn() предпочтительней, так как он соответствует STL. |
| replace() | Заменяет элемент, находящийся на задней позиции, значением переданным как параметр к методу. |
Вектор QVector<T>
Не эффективные методы push_front(),prepend(),pop_front(),remove(),insert()
| Метод | Описание |
|---|---|
| data() | Возвращает указатель на данные вектора. |
| fill() | Присваивает одно и тоже значение всем элементам вектора. |
| reserve() | Резервирует кол-во памяти для кол-ва элементов в соответствии с переданным значением |
| resize() | Устанавливает размер вектора в соответствии с переданным значением. |
| toList() | Возвращает объект QList с элементами, содержащимися в векторе. |
| toStdVector() | Возвращает объект std::vector с элементами, содержащимися в векторе. |
Массив байтов QByteArray
| Метод | Описание |
|---|---|
| qCompress() | Сжатие данных. |
| qUncompress() | Распоковка данных. |
| toBase64() | Преобразование бинарных данных в текст. |
| fromBase64() | Преобразование бинарных данных из текстового формата Base64. |
Массив битов QBitArray
| Метод | Описание |
|---|---|
| testBit() | чтение |
| setBit() | запись |
Списки QList<T> и QLinkedList<T>
QList yе эффективные методы insert()- в середину списка, для вставки лучше использовать QLinkedList<T>. Если надо прочитать элемент то вместо то [], надо использовать at().
| Методы | Описание |
|---|---|
| move() | Перемещение элемента с одной позиции на другую. |
| removeFirst() | Удаляет первый элемент списка. |
| removeLast() | Удаляет последний элемент списка. |
| swap() | Меняем местами два элемента на указанных позициях. |
| takeAt() | Возвращает элемент на указанной позиции и удаляет его. |
| takeFirst() | Удаляет первый элемент и возвращает его. |
| takeLast() | Удаляет последний элемент и возвращает его. |
| toSet() | Возвращает контейнер QSet<T> с данными, содержащимися в объекте QList<T> |
| toStdList() | Возвращает стандартный список STL std::list<T> с элементами, содержащимися в объекте QList<T> |
| toVector() | Возвращает объект вектора QVector<T> с элементами, содержащимися в объекте QList<T> |
|
1 2 3 4 5 6 7 |
QList<int> list; list << 10 << 20 <<30; QValueList<int>::iterator it = list.begin(); while(it != list.end()){ qDebug() <<"El:"<< *it; ++it; } |
Стек Stack<T>
| Метод | Описание |
|---|---|
| push() | Добавить объект в стек. |
| pop() | Получить объект из стека. |
| top() | Ссылка на элемент вершины стека. |
Очередь QQueue<T>
| Метод | Описание |
|---|---|
| enqueue() | Добавить элемент в очередь. |
| dequeue() | Получить элемент из очереди. |
Ассоциативные контейнеры
| Метод | Описание |
|---|---|
| contains() | Возвращает значение true, если контейнер содержит элемент с заданным ключём. Иначе false. |
| erase() | Удаляет элемент из контейнера в соответствии с переданным итератором. |
| find() | Осуществляет поиск элемента по значению. В случае успеха возвращает итератор, указывающий на этот элемент. В случае не удачи итератор ссылается на end(). |
| insertMulti() | Вставляет в контейнер новый элемент.Если элемент уже присутствует в контейнере, создаётся новый элемент. Отсутствует в QSet(). |
| insert() | Вставляет в контейнер новый элемент.Если элемент уже присутствует в контейнере, он замещается новым элементом. Отсутствует в QSet(). |
| key() | Возвращает первый ключ в соответствии с переданным в этот метод значением. Отсутствует в QSet(). |
| keys() | Возвращает список всех ключей, находящихся в контейнере. Отсутствует в QSet(). |
| take() | Удаляет элемент из контейнера в соответствии с переданным ключом и возвращает копию его значения. Отсутствует в QSet(). |
| unite() | Добавляет элементы одного контейнера в другой. |
| values() | Возвращает список всех значений, находящихся в контейнере. |
Словари QMap<K,T> и QMultiMap<K,T>
| Метод | Описание |
|---|---|
| lowerBound() | Возвращает итератор, указывающий на первый элемент с заданным ключом. |
| toStdMap() | Возвращает стандартный словарь STL с элементами, находящимися в объекте QMap<T> |
| upperBound() | Возвращает итератор, указывающий на последний элемент с заданным ключом. |
Хэши QHash<K,T> и QMultiHash<K,T>
| Метод | Описание |
|---|---|
| capacity() | Возвращает размер хэш-таблицы. |
| reserve() | Задает размер хэш-таблицы. |
| squeeze() | Уменьшает объем внутренней хэш-таблицы для уменьшения используемого объема памяти. |
Множество QSet<T>
| unite() | Объединение двух множеств. |
|---|---|
| intersect() | Пересечение двух множеств. |
| subtract() | Разность двух множеств. |
| reserve() | Задает размер хэш-таблицы. |
| scueeze() | Уменьшает объём хэш-таблицы для уменьшения используемого объема памяти. |
| toList() | Возвращает объект контейнера QList<T>, содеражщий элементы из объекта контейнера |
Алгоритмы QtAlgorithms
| Алгоритм | Описание |
|---|---|
| qBinaryFind() | Двоичный поиск заданных значений. |
| qCopy() | Копирование элементов начиная с первого |
| qCopyBackward() | Копирование элементов начиная с последнего. |
| qCount() | Подсчет элементов контейнера. |
| qDeleteAll() | Удаление всех элементов.Элементы контейнера не должны быть константными указателями. |
| qEqual() | Сравнение. Должен быть определен оператор ==. |
| qFill() | Присваивает всем элементам контейнера заданное значение. |
| qFind() | Поиск заданных значений. |
| qLowerBound() | Нахождение первого элемента со значением, большим либо равным заданному. |
| qUpperBound() | Нахождение первого элемента со значением, строго большим заданному. |
| qSort() | Сортировка элементов. |
| qStableSort() | Сортировка элементов с сохранением порядка следования равных элементов. |
| qSwap() | Перемена двух значений местами. |
Строки QString
Методы и операторы, для строк:
| Метод или Оператор | Описание | Пример |
|---|---|---|
| = | Оператор присваивания | QString s1 = «abcd»; QString s1 = «def»; |
| ==,!=,<,>,<=,>= | Логические операторы | s1!=s2; s1 <s2; |
| isEppty() | Проверка на пустую строку. | s1.isEmpty(); |
| isNull() | Проверка на нулевую строку. | s1.isNull(); |
| length() | Длина строки. | s1.length(); |
| +=,+,append() | Объединение строк. | s1=s1+s2; s1+=s2;s1.append(s2); |
| replace() | замена подстроки. | s1.replace(«ab»,»12»); |
| toLower(),toUpper() | Приведение к единому регистру. | s1.toUpper(); s1.toLower(); |
| setNum(),number() | Конвертация числового значения в строку. | s1.setNum(12); s1 = QString::number(12); |
| toDouble(),toInt() | Конвертация строки в числовое значение. | int i = QString(«123»).toInt(); |
| split() | Разбить строку на подстроки. | QStringList l = QString(«asd as qw qwe awe»).split(» «); |
| join() | Объединить список в строку. | QList<QString> l; l<< «as» <<«sd»<<«asd»; QString s = l.join(» «); |
Регулярные выражения. QRegExp.
| Символ | Описание | Пример |
|---|---|---|
| . | Любой символ | a.b |
| $ | Должен быть конец строки | Abc$ |
| [] | Любой символ из заданного набора | [abc] |
| - | Определяет диапазон символов в группе[] | [0-9A-Za-z] |
| ^ | В начале набора символов означает любой символ, не вошедший в набор | [^def] |
| * | Символ должен встретиться в строке ни разу или несколько раз | A*b |
| + | Символ должен встретиться в строке минимум 1 раз | A+b |
| ? | Сивол должен встретиться в строке 1 раз или не разу | A?b |
| {n} | Символ должен встретиться в строке указанное число раз | A{3}b |
| {n,} | Допускается минимум n совпадений | a{3,}b |
| {,n} | Допускается до n совпадений | a{,3}b |
| {n,m} | Допускается от n до m совпадений | a{2,3}b |
| | | Ищет один из двух символов | ac|bc |
| \b | В этом месте присутствует граница слова | a\b |
| \B | Границы слова нет в этом месте | a\Bb |
| () | Ищет и сохраняет в памяти группу найденных символов | (ab|ac)ad |
| \d | Любое число | |
| \D | Все, кроме числа | |
| \s | Любой тип пробелов | |
| \S | Все, кроме пробелов | |
| \w | Любая буква, цифра или знак подчёркивания | |
| \W | Все, кроме букв | |
| \A | Начало строки | |
| \b | Целое слово | |
| \B | Не слово | |
| \Z | Конец строки(символ конца строки или перевод каретки) | |
| \z | Конец строки(символ конца строки) |
Комментарии: