Проектный файл
Сигналы/Слоты
Объектная иерархия
Глобальные определения 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 | Конец строки(символ конца строки) |
Комментарии: