Умные указатели в Qt-коде: когда QSharedPointer, а когда std::shared_ptr
Введение В проектах на Qt разработчик неизбежно сталкивается с выбором: использовать собственные умные указатели Qt (QSharedPointer, QScopedPointer, QPointer) или указатели стандартной библиотеки (std::shared_ptr, std::unique_ptr, std::weak_ptr). Исторически Qt появился…
Интеграция CUDA-буферов с QImage/QPixmap для GPU-обработки изображений в Qt
Введение При построении Qt-приложений с GPU-ускоренной обработкой изображений (фильтры, свёртки, цветокоррекция) возникает задача эффективной передачи данных между CUDA-буферами на GPU и Qt-классами для отображения, такими как QImage. В…
Автоматический запуск тестов в CI
Введение Основной цикл статей про тестирование и тема CI/CD соединяются здесь напрямую — автоматический запуск тестов при каждом изменении кода — одна из главных практических ценностей CI, превращающая…
Статический анализ кода в CI: clang-tidy, cppcheck
Введение Тесты проверяют поведение кода во время выполнения — статический анализ исследует исходный код без его реального запуска, выявляя потенциальные ошибки, проблемы стиля, и небезопасные паттерны через анализ…
Метаданные плагинов через JSON (Q_PLUGIN_METADATA) и поиск по ним
Введение Помимо самого IID интерфейса, плагин может нести произвольные дополнительные метаданные — версию, автора, список поддерживаемых форматов файлов, требования к окружению — через JSON-блок, встроенный непосредственно в Q_PLUGIN_METADATA.…
Code coverage для Qt-проекта: gcov, lcov и интерпретация отчётов
Введение Покрытие кода тестами (code coverage) показывает, какая доля строк/веток кода была выполнена хотя бы раз во время прогона тестового набора. Это не метрика качества тестов само по…
Готовая реализация Singleton в Qt-стиле (потокобезопасный вариант)
Введение Singleton — один из самых обсуждаемых паттернов в программировании: его легко реализовать неправильно, и он часто подвергается критике за создание скрытых глобальных зависимостей. Тем не менее, для…
Валидация JSON по схеме (JSON Schema) в C++/Qt-проекте
Введение Когда приложение принимает JSON-данные из внешнего источника — REST API, конфигурационный файл, сообщение от другого сервиса — нужно убедиться, что структура данных соответствует ожиданиям, прежде чем пытаться…
Hot-reload плагинов во время работы приложения
Введение Во время разработки плагина перезапуск всего основного приложения после каждого изменения кода плагина замедляет цикл разработки. Hot-reload — возможность выгрузить старую версию плагина и загрузить новую, пересобранную…