Архив рубрики: Различные статьи по Qt и c++

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

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

Цели архитектуры Qt-проекта Хороший Qt-проект: CMake здесь — не просто билд-система, а средство описания архитектуры. Слоистая структура (Layered Architecture) Типовая схема: Каждый слой — отдельная библиотека. Модульность через targets Root: domain/CMakeLists.txt: ui: app: Dependency Rule Domain не знает о Qt Widgets. Допустимо: Недопустимо: MVVM / MVP в Qt Qt легко реализует MVVM: ViewModel — библиотека:… Читать далее »

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

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

Подключение популярных фреймворков тестирования к Qt-проекту

Qt поддерживает встроенное тестирование через QTest, но при разработке на C++ часто возникает необходимость использовать внешние фреймворки: Google Test, Catch2, Doctest, Boost.Test. В этой статье сравниваются и описываются способы их подключения к проекту на Qt (с использованием CMake и qmake). Общие условия Для всех фреймворков тестирования предполагается: QTest — встроенный фреймворк Qt Подключение: qmake: CMake:… Читать далее »

Флаг компиляции QT_DISABLE_DEPRECATED_BEFORE=0x060000 в Qt

Что это за флаг? QT_DISABLE_DEPRECATED_BEFORE — это предпроцессорный флаг, позволяющий отключать устаревшие API Qt, объявленные до определённой версии. Он активно используется при подготовке проектов к переходу на новую версию Qt (например, с Qt 5 на Qt 6). Пример использования: Этот флаг отключает доступ к API, помеченному как устаревший (deprecated) до версии 6.0.0. Зачем он нужен?… Читать далее »

Qt 5 vs Qt 6: Сравнение и анализ различий

Qt — это мощный кроссплатформенный фреймворк для разработки GUI и многоплатформенных приложений на C++. С выходом Qt 6 разработчики столкнулись с вопросом: чем он отличается от Qt 5 и стоит ли переходить? В этой статье подробно рассмотрим основные различия между Qt 5 и Qt 6, а также разберёмся, что нового принесла шестая версия и как… Читать далее »

Лямбда-выражения и функторы в C++

Современный подход к функциональному программированию Современный язык программирования C++ предлагает множество инструментов для написания лаконичного, эффективного и выразительного кода. Одним из таких инструментов являются лямбда-выражения и функторы, которые позволяют применять элементы функционального программирования в императивной парадигме. Эта статья предназначена для программистов, которые хотят лучше понять различия, сходства и области применения функторов (функциональных объектов) и лямбда-выражений… Читать далее »

Лямбда-выражения и функторы в C++

В современном C++ лямбда-выражения и функторы (объекты-функции) являются мощными инструментами для создания гибкого и выразительного кода. Они позволяют инкапсулировать поведение и передавать его как объекты, что особенно полезно при работе с алгоритмами STL, асинхронными операциями и многими другими сценариями. Функторы (объекты-функции) в C++ Что такое функторы? Функтор — это объект класса, для которого перегружен оператор вызова operator().… Читать далее »

Умные указатели в C++: unique_ptr, shared_ptr, weak_ptr

Умные указатели (smart pointers) — это объекты-обертки для «сырых» указателей (raw pointers), которые автоматически управляют временем жизни динамически выделенной памяти. Они были введены в стандарт C++11 для решения проблем с утечками памяти и висячими указателями, которые часто возникают при ручном управлении памятью. Основные типы умных указателей Стандартная библиотека C++ предоставляет три основных типа умных указателей:… Читать далее »

Примеры сортировки QList с использованием std::sort в Qt

Современный подход к сортировке в Qt-проектах заключается в использовании стандартного алгоритма std::sort из STL. Он отлично работает с контейнерами Qt, такими как QList и QVector, при условии, что они поддерживают RandomAccessIterator. В этой статье приведены примеры сортировки строк (QList<QString>) и пользовательских структур. Сортировка QList<QString> по алфавиту По умолчанию std::sort использует оператор <, который уже определён… Читать далее »

std::sort vs qSort: что выбрать для сортировки в C++/Qt?

При разработке на C++ с использованием фреймворка Qt, программист может столкнуться с выбором между использованием стандартного алгоритма std::sort и устаревшей функции qSort из Qt. В этой статье мы разберем, в чем разница между ними, какие преимущества и недостатки у каждого, и какой вариант стоит использовать в современных проектах. Краткое описание std::sort qSort Сравнение по критериям… Читать далее »