Прокси для одного сетевого менеджера Для изолированной настройки прокси задайте его конкретному QNetworkAccessManager, а не всему приложению. Так разные подсистемы могут использовать независимые настройки. Тип прокси должен соответствовать…
Выбор элемента по порядку Если нужен один элемент на позиции k в отсортированной последовательности, полная сортировка делает лишнюю работу. std::nth_element переставляет диапазон так, чтобы элемент на позиции nth…
Совместное управление остановкой std::jthread появился в C++20 и упрощает управление временем жизни потока: его деструктор запрашивает остановку и присоединяет поток. Поток должен сам проверять запрос и завершать работу…
Когда обычный QModelIndex недостаточен QModelIndex обычно используют кратковременно: получить данные, обработать действие пользователя и завершить работу. После вставки, удаления или перестановки строк старый индекс может больше не указывать…
Модель только для чтения из SQL-запроса QSqlQueryModel связывает результат произвольного SQL-запроса с представлением Qt. Это удобно для отчётов и сложных выборок, когда редактирование напрямую через таблицу не требуется.…
Перенос элементов по условию без потери порядка std::stable_partition переставляет диапазон так, чтобы элементы, удовлетворяющие предикату, оказались перед остальными. При этом относительный порядок внутри обеих групп сохраняется. Итератор middle…
Зачем выносить работу из интерфейсного потока Если слот кнопки выполняет долгую операцию прямо в GUI-потоке, окно перестаёт перерисовываться и не реагирует на действия пользователя. Для независимой вычислительной задачи…
Переход с Qt5 на Qt6 — это не просто смена номера версии в файле сборки. Qt6 принёс изменения в систему сборки (переход на CMake как основной инструмент), переработку…
Qt6 — первое крупное обновление основной версии фреймворка за много лет. В отличие от перехода Qt4 → Qt5, который был довольно болезненным, Qt6 спроектирован так, чтобы упростить поддержку…
Qt Quick 3D — это декларативный модуль для построения 3D-сцен на QML, появившийся ещё в Qt 5.15 в техническом превью и получивший полноценную поддержку в Qt6. В отличие…
При миграции с Qt5 на Qt6 значительная часть работы — это механическая замена устаревших классов и методов. Ниже приведена таблица наиболее частых соответствий, а также примеры кода «было/стало»…
Qt позволяет писать кросс-платформенные мобильные приложения на C++/QML с единой базой кода для Android и iOS. В этой статье рассмотрим настройку окружения для сборки под Android и создадим…
Модель только для чтения из SQL-запроса QSqlQueryModel связывает результат произвольного SQL-запроса с представлением Qt. Это удобно для отчётов и сложных выборок, когда редактирование напрямую через таблицу не требуется.…
Введение Модуль Qt SQL предоставляет единый высокоуровневый интерфейс для работы с разными СУБД — SQLite, MySQL, PostgreSQL и другими — через систему драйверов. Это позволяет писать код, который…
Введение Формирование SQL-запроса через конкатенацию строк с пользовательским вводом — прямой путь к SQL-инъекции, одной из самых серьёзных и распространённых уязвимостей веб- и десктоп-приложений, работающих с базами данных.…
Введение Для типичной задачи отображения и редактирования таблицы базы данных в табличном виджете Qt предоставляет QSqlTableModel, который автоматически генерирует SQL-запросы для чтения, обновления, вставки и удаления строк, избавляя…
Введение По мере развития приложения схема базы данных меняется — добавляются таблицы, столбцы, индексы. Если изменения схемы применяются вручную и бесконтрольно, разные установки приложения у разных пользователей (или…
Введение Транзакция — группа операций с базой данных, которая должна быть выполнена целиком (commit) или не выполнена вовсе (rollback), без промежуточных, частично применённых состояний. Это критично для операций,…
Введение Boot2Qt — коммерческое решение от Qt Company для встраиваемой (embedded) разработки: готовый, оптимизированный embedded Linux образ с предустановленным Qt, инструменты для удалённого развёртывания и отладки прямо из…
Введение Не каждой команде подходит коммерческий Boot2Qt — для полностью самостоятельного контроля над embedded Linux образом часто используется Yocto Project, более гибкий, но и значительно более сложный путь…
Введение Embedded-устройства часто работают на значительно более слабом железе, чем десктоп или даже современный смартфон — медленный процессор без аппаратного ускорения графики или с ограниченной GPU, мало оперативной…
Введение Большинство embedded-устройств не запускают полноценную систему рабочих столов с X11 или Wayland — Qt-приложение часто является единственным графическим приложением на устройстве, рисующим прямо в фреймбуфер или напрямую…
Введение Многие embedded-устройства используют сенсорные экраны как основной способ взаимодействия с пользователем, и в отсутствие полноценной оконной системы (статья 243) обработка касаний требует отдельной настройки на уровне Qt…
Введение Embedded-устройства, развёрнутые «в поле» (у конечных пользователей или на производственных площадках), редко имеют физический доступ для ручного обновления — необходим механизм обновления «по воздуху» (Over-The-Air, OTA), позволяющий…