с 2013 года · 300+ статей

Статьи и примеры по Qt, C++ и не только

Технический блог для разработчиков: практические разборы, примеры кода и решения типовых задач — без пейволов и обязательной подписки.

Последние статьи

Синтаксис си/с++

Стек и куча: где живут переменные, разница в скорости и времени жизни

Введение Ранее мы упоминали «автоматическое» время жизни локальных переменных и динамическую память — в этой статье соберём эти концепции в единую картину, явно разобрав два основных региона памяти,…

Синтаксис си/с++

Динамическая память: malloc/free, new/delete, отличия и подводные камни

Введение До этой статьи все примеры использовали переменные с автоматическим временем жизни, размер и количество которых известны на этапе компиляции — динамическая память позволяет выделять память во время…

Синтаксис си/с++

Перечисления: enum в C и enum class в C++

Введение Перечисления дают именованные, осмысленные альтернативы «магическим числам» — в этой статье разберём enum в его классическом, С-совместимом виде, и более современный, безопасный enum class C++11, устраняющий ряд…

Синтаксис си/с++

Объединения (union) и битовые поля

Введение Ранее мы разобрали struct, где все поля существуют одновременно, занимая суммарный объём памяти — union представляет принципиально иной подход, где все поля совместно используют ОДНУ И ТУ…

Синтаксис си/с++

Структуры (struct): объявление, вложенность, выравнивание полей

Введение После базового синтаксиса (блок 1) переходим к организации данных — struct объединяет несколько связанных значений разных типов в единую сущность, и в этой статье разберём объявление структур,…

Arduino

Управление реле и моторами из Qt-интерфейса

Введение Помимо чтения данных датчиков, частая задача — управление исполнительными устройствами: реле (включение/выключение мощных нагрузок), DC-моторы через драйверы типа L298N. В статье разберём прошивку и Qt-интерфейс для управления…

Arduino

Ультразвуковой датчик расстояния (HC-SR04): измерения в реальном времени на графике

Введение HC-SR04 — популярный, недорогой ультразвуковой датчик измерения расстояния, часто используемый в проектах автоматизации, робототехники, парковочных систем. В статье разберём прошивку для работы с этим датчиком и визуализацию…

Arduino

Датчики температуры/влажности (DHT11/22): прошивка и приём данных в Qt

Введение DHT11/DHT22 — одни из самых распространённых, доступных датчиков температуры и влажности для Arduino-проектов. В статье разберём подключение датчика, написание прошивки с использованием готовой библиотеки для чтения показаний,…

Arduino

Прошивка Arduino (sketch): структура setup()/loop(), простой текстовый протокол для Qt

Введение Со стороны Arduino нужна прошивка (sketch), которая слушает последовательный порт, разбирает приходящие от Qt-приложения команды и отправляет обратно данные датчиков. В статье разберём базовую структуру скетча и…

Arduino

Основы QSerialPort: обнаружение портов, открытие соединения, протокол обмена с Arduino

Введение QSerialPort — модуль Qt для работы с последовательными (COM/USB-UART) портами, через которые Arduino по умолчанию общается с компьютером. В статье разберём базовый процесс обнаружения подключённой платы, открытия…

Arduino

Сравнение программ для работы с Arduino: Arduino IDE, PlatformIO, Qt Creator с расширениями

Введение Перед тем как писать прошивку для Arduino, нужно выбрать инструмент разработки. В статье сравним три основных варианта: классическую Arduino IDE, более продвинутый PlatformIO (как расширение для VS…

Различные статьи по Qt и c++

Смотреть все статьи →
Заметки по языку с и с++

Концепты (concepts) в C++20: ограничение шаблонных параметров

Введение Одна из главных болей шаблонного программирования в C++ — нечитаемые сообщения об ошибках, когда шаблон используется с неподходящим типом. До C++20 единственным способом ограничить допустимые типы и…

Заметки по языку с и с++

Умные указатели в Qt-коде: когда QSharedPointer, а когда std::shared_ptr

Введение В проектах на Qt разработчик неизбежно сталкивается с выбором: использовать собственные умные указатели Qt (QSharedPointer, QScopedPointer, QPointer) или указатели стандартной библиотеки (std::shared_ptr, std::unique_ptr, std::weak_ptr). Исторически Qt появился…

Заметки по языку с и с++

Потокобезопасные структуры данных в Qt-приложениях: паттерны и ошибки

Введение При переходе от однопоточного кода к многопоточному самая частая ошибка — продолжать использовать обычные контейнеры (QVector, QList, QMap, std::vector) из нескольких потоков без какой-либо синхронизации, считая их…

Cmake

Интеграция Boost в Qt-проект с использованием CMake

Архитектурная Ключевой принцип:никаких глобальных include_directories, только target-based linking. Структура проекта Пример использования Boost внутри Qt Будем использовать: FileService.h FileService.cpp MainWindow.h MainWindow.cpp main.cpp CMakeLists.txt (Qt6 + Boost) Что происходит…

Cmake

Архитектура Qt-приложений + CMake

Цели архитектуры Qt-проекта Хороший Qt-проект: CMake здесь — не просто билд-система, а средство описания архитектуры. Слоистая структура (Layered Architecture) Типовая схема: Каждый слой — отдельная библиотека. Модульность через…

Различные статьи по Qt и c++

Шаблон CMake-проекта с переключениями библиотеками тестирования

Этот шаблон проекта позволяет легко переключаться между различными фреймворками тестирования в C++/Qt: Структура проекта (предполагаемая) Шаблон Как собрать

обновлено

Заметки по языку с и с++

Смотреть все статьи →
Заметки по языку с и с++

Реализация State Machine (конечного автомата) через QStateMachine

Введение Многие части интерфейса и бизнес-логики приложения естественно описываются как конечные автоматы: состояние подключения (отключён/подключается/подключён/ошибка), состояние формы (редактирование/сохранение/сохранено), плеер (воспроизведение/пауза/остановлен). Реализация такой логики через разрозненные булевы флаги и…

Заметки по языку с и с++

Готовый класс для работы с конфигурацией приложения (обертка над QSettings)

Введение QSettings предоставляет кросс-платформенный доступ к настройкам приложения (реестр Windows, .ini-файлы, plist на macOS), но прямое использование QSettings с обращением по строковым ключам по всему коду — источник…

Готовые методы реализаций

Реализация Event Bus / шины событий на сигналах Qt для слабосвязанных модулей

Введение В крупных приложениях с множеством модулей прямая связь между ними через сигналы/слоты (где каждый модуль явно знает о существовании и интерфейсе другого) постепенно создаёт плотный граф зависимостей,…

Заметки по языку с и с++

Inline-переменные и одноопределимое правило (ODR) в современном C++

Введение One Definition Rule (ODR, «правило одного определения») — одно из фундаментальных, но часто неочевидных правил C++: любая сущность (функция, переменная, класс, шаблон) должна иметь ровно одно определение…

Заметки по языку с и с++

Правило пяти (Rule of Five) в C++: конструкторы копирования/перемещения на практике

Введение «Правило пяти» (Rule of Five) — современная версия классического «правила трёх» (Rule of Three) из C++98, расширенная в C++11 семантикой перемещения. Если ваш класс самостоятельно управляет каким-либо…

Заметки по языку с и с++

Концепты (concepts) в C++20: ограничение шаблонных параметров

Введение Одна из главных болей шаблонного программирования в C++ — нечитаемые сообщения об ошибках, когда шаблон используется с неподходящим типом. До C++20 единственным способом ограничить допустимые типы и…

Рубрики