Похожие презентации:
ВВП_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 “название ветки”
Программирование