Одинаковая конфигурация для команды CMakePresets.json хранит повторно используемые настройки конфигурации: генератор, каталог сборки, toolchain-файл и параметры проекта. Команда может вызывать именованный preset вместо копирования длинных команд из документации.…
Получение идентификатора добавленной записи После успешного INSERT метод QSqlQuery::lastInsertId() возвращает идентификатор последней вставленной строки, если это поддерживается драйвером базы данных. Всегда проверяйте результат exec() до чтения ID. Поддержка…
Фокус внутри переиспользуемого компонента FocusScope создаёт область, внутри которой дочерние элементы могут управлять клавиатурным фокусом как единым компонентом. Это полезно для пользовательского контрола с несколькими полями: внешний экран…
Не загружайте оригинал, если нужен миниатюрный просмотр Большая фотография может занимать много памяти в несжатом виде. QImageReader позволяет задать целевой размер до чтения; форматный плагин может декодировать уменьшенную…
Ширина строки и высота шрифта QFontMetrics помогает оценить, сколько места займёт текст с конкретным шрифтом. Например, можно определить ширину подписи до рисования или проверить, помещается ли строка в…
Прокси для одного сетевого менеджера Для изолированной настройки прокси задайте его конкретному QNetworkAccessManager, а не всему приложению. Так разные подсистемы могут использовать независимые настройки. Тип прокси должен соответствовать…
Зачем выносить работу из интерфейсного потока Если слот кнопки выполняет долгую операцию прямо в 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 и создадим…
Получение идентификатора добавленной записи После успешного INSERT метод QSqlQuery::lastInsertId() возвращает идентификатор последней вставленной строки, если это поддерживается драйвером базы данных. Всегда проверяйте результат exec() до чтения ID. Поддержка…
Модель только для чтения из SQL-запроса QSqlQueryModel связывает результат произвольного SQL-запроса с представлением Qt. Это удобно для отчётов и сложных выборок, когда редактирование напрямую через таблицу не требуется.…
Введение Модуль Qt SQL предоставляет единый высокоуровневый интерфейс для работы с разными СУБД — SQLite, MySQL, PostgreSQL и другими — через систему драйверов. Это позволяет писать код, который…
Введение Формирование SQL-запроса через конкатенацию строк с пользовательским вводом — прямой путь к SQL-инъекции, одной из самых серьёзных и распространённых уязвимостей веб- и десктоп-приложений, работающих с базами данных.…
Введение Для типичной задачи отображения и редактирования таблицы базы данных в табличном виджете Qt предоставляет QSqlTableModel, который автоматически генерирует SQL-запросы для чтения, обновления, вставки и удаления строк, избавляя…
Введение По мере развития приложения схема базы данных меняется — добавляются таблицы, столбцы, индексы. Если изменения схемы применяются вручную и бесконтрольно, разные установки приложения у разных пользователей (или…
Введение 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), позволяющий…