Qt, pointers, git
Умные указатели
Умные указатели
Умные указатели - синтаксис
Умные указатели - синтаксис
Qt
Qt
Qt
Основные понятия Qt
Основные понятия Qt
Сигнал и слот
Дополнение
Git
52.30K
Категория: ПрограммированиеПрограммирование

ВВП_4

1. Qt, pointers, git

2. Умные указатели

Для более эффективной работы с памятью
существует три типа умных указателей
• unique_ptr – этот указатель запрещает делать
более одной ссылки на объект
• shared_ptr – можно делать сколько угодно ссылок
на объект, объект будет удалён когда на него
останется 0 ссылок
• weak_ptr – указатель который создается из
shared но при этом сам по себе не позволяет
получить доступ к памяти, нужен для решения
некоторых низкоуровневых проблем

3. Умные указатели

Умные указатели решают проблему очистки памяти
при выделении в куче(heap), они сами наблюдают
за объектом и решают когда его нужно удалить
Также распространенная проблема это удаление
объекта которым кто-то еще пользуется, в
современных приложениях, нужно чистить память
эффективно, а не только тогда когда приложение
будет закрыто, умные указатели решают эту
проблему, очищая память когда объектом никто не
пользуется

4. Умные указатели - синтаксис

Рассмотрим на примере shared_ptr
Чтобы иметь возможность пользоваться указателями
сделать
#include <memory>
Чтобы создать умный указатель нужно
std::shared_ptr<int> p_x = std::make_shared<int>(5);
Чтобы вывести нужно также разыменовать значение
std::cout << *p_x;

5. Умные указатели - синтаксис

pointer.get() – дает обычный указать на тот же
объект на который указывает умный
pointer.use_count() – метод shared_ptr который
дает информацию о том сколько указателей сейчас
на рассматриваемый объект

6. Qt

Самая популярная библиотека для отрисовки
визуала на C++, также используется и на Python.
Из коробки является кроссплатформенной
Также сам по себе Qt предоставляет очень много
функционала помимо визуала, различные контейнеры
для данных, утилиты, сетевое взаимодействие
Для визуальных элементов Qt использует подход
сигналов и слотов

7. Qt

Чтобы пользоваться Qt нужно скачать библиотеку с
официального сайта и указать необходимые команды
в Cmake
find_package(Qt6 REQUIRED COMPONENTS Core
Widgets)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
target_link_libraries(YourProjectName Qt6::Core
Qt6::Widgets)

8. Qt

Чтобы начать работать с Qt нужно нужно передать
аргументы main функции в QApllication, это нужно
для того чтобы Qt мог свободно управлять
жизненным циклом вашего приложения.
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
app.exec();
}
Таким образом ваше приложение станет Qt приложение и
будет работать как нужно

9. Основные понятия Qt

Базовые классы в Qt
• QWidget – класс объекта Qt который можно
визуально отображать и кастомизировать
• QObject – класс объекта Qt которые может иметь
сигналы, слоты и многий другой функционал но
отображён быть не может
• QLayout – определяет как будут располагаться
ваши виджеты(вертикально, горизонтально и тд) –
QHBoxLayout это горизонтальное расположение,
QVBoxLayout – вертикальное расположение

10. Основные понятия Qt

QPushButton – обычная кнопка на которую можно
нажимать
QLineEdit – строка для ввода какого-либо текста
QComboBox – выпадающий список заданных значений
QSpinBox – строка для ввода цифр, с
дополнительным виджетом для увеличения и
уменьшения числа
Также в Qt для многих базовых объектов
существуют свои реализации, например – QVector,
QString, QList и тд. Предпочтительно
пользоваться ими, так как они более

11. Сигнал и слот

У всех виджетов есть свои сигналы, которые они
выпускают когда происходит какое-либо действие
Сигнал – по своей сути функция которая скажет о том
когда будет использована, например для кнопки есть
сигнал buttonClicked, можно подключиться к этому
сигналу и исполнить какой либо код после нажатия на
кнопку
Слот – служит функцией которая будет использована
когда сигнал будет выпущен
Синтаксис соединения - connect(<объект который
выпускает сигнал>, &<Класс этого объекта>::<Сигнал
этого объекта>, <объект который примет сигнал>,
&<Класс этого объекта>::<Слот этого объекта>)
Пример: connect(button, &QPushButton::buttonClicked,
this, &MyWidget::buttonClickedSlot);

12. Дополнение

Использование Qt и умных указателей это плохая
практика.
Qt сам отслеживает память которая выделена под
объекты, он работает по принципу parent – child,
когда погибает parent, он проходится по всем
child и уничтожает их тоже
Например: у вас есть какое-то окошко с кнопкой,
в этом случае окно будет являться parent, а
кнопка child, то есть когда вы закроете окно,
оно удалится как объект и вместе с ним удалится
и кнопка.
Если сюда добавить ещё и умные указатели, то
будет возможно двойное удаление объекта, будет

13. Git

Крупнейшая система контроля версий – основная
идея это хранить только изменения, а не все
файлы
Основные команды:
• git push
• git pull
• git commit –m “ваше сообщение”
• git branch –b “название ветки”
English     Русский Правила