Skip to content

Latest commit

 

History

History
182 lines (115 loc) · 8.69 KB

README.ru.MD

File metadata and controls

182 lines (115 loc) · 8.69 KB

English | Русский

Qt5 Utility Boilerplate by TheLongRunSmoke

License

Style

Ubuntu tests codecov

Ubuntu build Windows build

Что это?

Шаблон для создания простого кроссплатформенного приложения с графическим интерфейсом на базе Qt.

Можно начинать прямо с разработки виджета содержащего целевой функционал.

Особенности:

  • Готовый шаблон. Не требует дополнительной подготовки к работе.
  • Кроссплатформенный. Может быть собран для Windows, Linux, любой ОС поддерживаемой Qt.
  • Минимальная архитектура и структура директорий, обеспечивающие пониженное зацепление.
  • Система настроек, независимая от ОС.
  • Наборы тестов и покрытие уже настроены.
  • Инструменты контроля стиля кода.
  • Поддержка интернационализации.
  • Встроенная поддержка поиска утечек памяти.
  • Нет Boost.
  • Cmake как система сборки.
  • Базовый CI на основе GitHub Actions.

Как собрать?

Установка зависимостей

Нужен Qt 5.12 или выше.

Windows

Установите Qt c официального сайта.

Linux

Пример для Ubuntu 20.04, для других версий или дистрибутивов смотрите Qt Wiki.

sudo apt install build-essential qt5-default qttools5-dev-tools

Другие ОС

Смотрите Qt Wiki.

Сборка

Сборка in-source запрещена. Собирайте в новой директории:

cmake -S. -Bbuild
cmake --build build

Пример

Папка src/example содержит пример создания приложения с использованием этого каркаса.

  1. Создайте класс основного окна от UtilityMainWindow вместо QMainWindow.
  2. Инициализируйте UI в конструкторе, в соответствии с документацией Qt.
  3. Переопределите getExtensions(), getFileReadMode(), getFileWriteMode() чтобы указать тип фала и режимы записи-чтения.
  4. Переопределите loadFile(fileName) and saveFile(filename) реализовав чтение и запись вашего файла. В примере есть базовый вариант подходящий для текста.
  5. Реализуйте isDocumentModified() and clearDocument() это позволит окну отвечать на состояние документа.
  6. Делегируйте методы cut(), copy() and paste() вашему виджету.
  7. В main.cpp замените MainWindow на ваш класс.

Поддержка интернационализации

Шаблон включает поддержку интернационализации Qt.

Вам нужно только создать перевод, чтобы это заработало.

Обратите внимание, в данный момент модуль utility_boilerplate_qt5 поддерживает только 2 языка:

  1. Английский — встроен в исходный код
  2. Русский

Как собрать новый перевод?

ru_RU для примера, используйте ваш код языка.

  1. Соберите все строки внутри tr() в TS файл с использованием lupdate.

    lupdate *.cpp -ts i18n/ru/app_ru.ts
  2. Откройте в средстве переводов и переведите.

    linguist i18n/ru/app_ru.ts
  3. Qt может загружать только один файл перевода за раз, поэтому необходимо создать полный перевод используя lconvert. Найдите файл содержащий локализацию системных строк Qt qtbase_<language code>.ts в пакете установки или репозитории и поместите его в директорию i18n/<language code>. Далее соберите TS файлы в один с помощью lconvert.

    cd i18n/
    lconvert -i ru/*.ts ../../utility_boilerplate_qt5/i18n/ru/*.ts -o ru/appcomp_ru.ts
  4. Соберите QM файл используя lrelease. Система сборки автоматически копирует все QM файлы в директорию, где исполняемый файл может их найти.

    lrelease ru/appcomp_ru.ts ru/appcomp_ru.qm
  5. Чтобы проверить, что перевод загружается корректно, запустите приложение из командной строки, и найдите строчку Translation for "<language code>" load successfully. Если перевод не загрузился вы увидите Can't load translation for "<language code>". Qt не предлагает дополнительной отладочной информации.

Контроль стиля кода

Проект предлагает инструменты контроля стиля кода с помощью clang-format and cmake-format. Включая стили для IDEA.

Проверка стиля в CI провалится, если хоть один файл не соответствует указанным правилам.

Установка инструментов контроля стиля необязательна.

Установка зависимостей

Windows

clang-format может быть загружен с пакетом LLVM.

cmake-format устанавливается с помощью pip.

pip install cmakelang pyyaml

Linux

Должны иметь всё необходимое, кроме cmake-format.

pip install cmakelang

Использование

Подробности в документации Format.cmake.

Проверить формат всех файлов в проекте.

cmake --build build --target check-format

Исправить формат всех файлов.

cmake --build build --target fix-format

Встроенная поддержка поиска утечек памяти

Каркас включает поиск утечек памяти на базе техники debug_new, реализованной библиотекой NVWA.

Чтобы включить этот механизм на Linux и Mac добавьте ключ -DNVWA во время сборки.

На Windows механизм выключен в силу плохой совместимости.

Контакты

Используйте тикеты (issues), если у вас есть вопросы.