QT справочник. Основы

Проектный файл

Сигналы/Слоты

Объектная иерархия

Глобальные определения 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 Задает файлы переводов, используемые в проекте.

 

Сигналы/Слоты:

Шаблон класса использующего слоты и сигналы.

 

Определение слота:

 

Послать сигнал:

 

Соединение сигнала и слота:

или

 

Соединение двух сигналов в объекте унаследованном от QObject:

 

Разъединение сигнала и слота:

или

 

Заблокировать отправку сигналов:

 

Разблокировать отправку сигналов:

 

Проверить состояние сигналов:

 

Объектная иерархия.

Объявление объекта :

Если предка нет, объект является объектом верхнего уровня.

 

Таблица методов, для просмотра иерархии классов:

Перед выполнением команды из примера выполняется следующий код:

 

Метод объекта Описание Пример
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

 

Пример использования:

 

Методы для итераторов

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

Двигаемся вперёд, по контейнеру:

 

Двигаемся назад по контейнеру:

 

Если значение не меняется эффективнее использовать константные итераторы:

 

foreach — изменения в нём не влияют на на оригинальный контейнер.

 

Последовательные контейнеры:

Методы последовательных контейнеров:

Оператор/метод Описание
+ Объединяет элементы двух контейнеров
+= и << Добавляет элемент в контейнер.
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>

 

 

Стек 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 Конец строки(символ конца строки)

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *