Статьи о C и C++ вне привязки к Qt: язык, стандартная библиотека, инструменты разработчика, сборка и отладка. Материалы для тех, кто хочет глубже понимать язык, на котором написан весь остальной сайт.
Концепты (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) из нескольких потоков без какой-либо синхронизации, считая их…
Интеграция Boost в Qt-проект с использованием CMake
Архитектурная Ключевой принцип:никаких глобальных include_directories, только target-based linking. Структура проекта Пример использования Boost внутри Qt Будем использовать: FileService.h FileService.cpp MainWindow.h MainWindow.cpp main.cpp CMakeLists.txt (Qt6 + Boost) Что происходит…
Архитектура Qt-приложений + CMake
Цели архитектуры Qt-проекта Хороший Qt-проект: CMake здесь — не просто билд-система, а средство описания архитектуры. Слоистая структура (Layered Architecture) Типовая схема: Каждый слой — отдельная библиотека. Модульность через…
Шаблон CMake-проекта с переключениями библиотеками тестирования
Этот шаблон проекта позволяет легко переключаться между различными фреймворками тестирования в C++/Qt: Структура проекта (предполагаемая) Шаблон Как собрать
Подключение популярных фреймворков тестирования к Qt-проекту
Qt поддерживает встроенное тестирование через QTest, но при разработке на C++ часто возникает необходимость использовать внешние фреймворки: Google Test, Catch2, Doctest, Boost.Test. В этой статье сравниваются и описываются…
Флаг компиляции QT_DISABLE_DEPRECATED_BEFORE=0x060000 в Qt
Что это за флаг? QT_DISABLE_DEPRECATED_BEFORE — это предпроцессорный флаг, позволяющий отключать устаревшие API Qt, объявленные до определённой версии. Он активно используется при подготовке проектов к переходу на новую…