15.4. Перевод существующих приложений.
В качестве примера, рассмотрим процесс перевода приложения Spreadsheet, которое было написано нами в Главе 3. Оно уже содержит все необходимые вызовы tr().
Прежде всего, необходимо внести изменения в файл проекта .pro, чтобы указать — какие языки будут поддерживаться приложением. Допустим, что мы собираемся включить поддержку немецкого, французского и русского языков, дополнительно к английскому, тогда необходимо в файл spreadsheet.pro добавить раздел TRANSLATIONS:
TRANSLATIONS = spreadsheet_de.ts \ spreadsheet_fr.ts \ spreadsheet_ru.ts
Здесь мы указали три файла переводов: для немецкого, французского и русского языков. Эти файлы будут созданы при первом запуске утилиты lupdate, а на последующих запусках будут просто дополняться.
Обычно исходные файлы с переводом имеют расширение .ts. Они записываются в формате XML и потому занимают больше места на диске, чем скомпилированные файлы с переводом .qm. Для тех, кому это интересно — .ts означает «translation source» (исходный текст перевода), а .qm — «Qt message».
Допустим, что мы уже находимся в каталоге с исходными текстами приложения Spreadsheet. Теперь запускаем lupdate из командной строки:
lupdate -verbose spreadsheet.pro
Ключ -verbose — необязательный. Он просто заставляет lupdate выводить более подробную информацию в ходе своей работы. Ниже приведен примерный вывод, полученный во время работы утилиты:
Updating spreadsheet_de.ts . 0 known, 101 new and 0 obsoleted messages Updating spreadsheet_fr.ts . 0 known, 101 new and 0 obsoleted messages Updating spreadsheet_ru.ts . 0 known, 101 new and 0 obsoleted messages
Каждая строка, которая «завернута» в вызов tr(), заносится в .ts, с пустым местом для перевода. Строки, которые находятся в файле .ui, так же включаются в исходный файл перевода.
По-умолчанию, lupdate предполагает, что все строки, завернутые в вызовы tr(), набраны в кодировке Latin-1. Если это не так, необходимо указать элемент CODEC в файле .pro, например так:
CODEC = EUC-JP
Это необходимо делать в дополнение к вызову QTextCodec::setCodecForTr() в приложении.
Перевод, в файлы spreadsheet_de.ts, spreadsheet_fr.ts и spreadsheet_ru.ts, добавляется переводчиком, с помощью утилиты Qt Linguist .
Чтобы запустить Qt Linguist , в среде Windows, выберите пункт Qt 3.2.x | Qt Linguist в меню Пуск, в среде Unix — наберите команду linguist. Затем, с помощью меню File|Open, откройте файл с исходным текстом перевода.
С левой стороны главного окна Qt Linguist находится список контекстов переводов. Для Spreadsheet существуют следующие контексты: «FindDialog», «GoToCellDialog», «MainWindow», «SortDialog» и «Spreadsheet». В верхней части с правой стороны находится список строк для текущего контекста. Каждая строка отображается вместе с переводом и флагом Done («Готово»). В средней области, с правой стороны, вводится текст перевода для текущей строки. И внизу находится список переводов, автоматически предлагаемых утилитой Qt Linguist .
По окончании работы над переводом, файл .ts необходимо преобразовать в файл .qm. Для этого, в приложении Qt Linguist выберите пункт меню File|Release. Обычно, после перевода нескольких строк, выполняются пробные запуски приложения, с созданным файлом .qm, чтобы визуально оценить качество перевода.

Рисунок 15.2. Qt Linguist в действии.
Чтобы перегенерировать все файлы .qm сразу, необходимо запустить утилиту командной строки lrelease:
lrelease -verbose spreadsheet.pro
Предположим, что мы сделали перевод на русский язык 19-ти строк, причем установили признак Done для 17-ти из них. В этом случае мы получим от lrelease примерно такой вывод:
Updating spreadsheet_de.qm . 0 finished, 0 unfinished and 101 untranslated messages Updating spreadsheet_fr.qm . 0 finished, 0 unfinished and 101 untranslated messages Updating spreadsheet_ru.qm . 17 finished, 2 unfinished and 82 untranslated messages
Непереведенные строки, при пробном запуске приложения, будут отображаться на языке оригинала. Флаг Done никак не используется утилитой lrelease, он предназначен исключительно для переводчика, чтобы напоминать о том, какие строки имеют окончательный перевод, а какие требуют уточнения.
В случае внесения изменений в исходный код приложения, содержимое файлов .ts может «устареть». Чтобы этого не происходило нужно всякий раз запускать утилиту lupdate, добавлять перевод для вновь появляющихся строк и пересобирать файлы .qm. Некоторые команды разработчиков синхронизируют перевод так часто, насколько это только возможно, другие предпочитают дождаться окончательного релиза приложения и только тогда приступают к переводу.
Утилиты lupdate и Qt Linguist достаточно «умны». Переведенные строки, необходимость в которых уже отпала, все равно сохраняются в исходных файлах с переводами, на тот случай, если они могут понадобиться в будущем. При обновлении файлов .ts, утилита lupdate использует интеллектуальный алгоритм объединения, который помогает избежать лишней работы по переводу одинаковых строк в различных контекстах.
За дополнительной информацией о программах Qt Linguist , lupdate и lrelease, обращайтесь к справочному руководству Qt Linguist , которое доступно по адресу: http://doc.trolltech.com/3.2/linguist-manual.html. Это руководство содержит полное описание пользовательского интерфейса программы и пошаговый самоучитель для программистов.
| Пред. | В начало | След. |
| Динамическое переключение языков. | На уровень выше | Разработка справочной системы приложения. |
Qt Linguist
Qt Linguist — это специальная программа, предназначенная для редактирования ts-файлов, содержащих переводы строк продукта/приложения.
Установить программу можно, выполнив команду (потребуются права администратора):
# urpmi qt4-linguist
После установки пакета запустите программу Qt Linguist из панели задач/меню или набрав в командной строке linguist. Затем откройте ts-файл с исходным текстом перевода.
Главное окно Qt Linguist разделено на отдельные области в виде плавающих окон, расположенных вокруг центральной области перевода A. Список контекстов переводов B расположен слева, список строк текущего контекста C, окно с исходным кодом D, где расположена переводимая строка, а также окно со списком переводов E, автоматически предлагаемых утилитой Qt Linguist, и окно предупреждений F расположены соответственно сверху и снизу от области переводов.

После того как загрузили файл переводов, выберите контекст для перевода из списка контекстов B. При этом загружается список строк C для перевода, найденных для этого контекста. При выборе одной из строк строка копируется в поле «Исходный текст» G области переводов A. Введите свой перевод в текстовое поле H, расположенное снизу от переводимой строки.

Чтобы подтвердить перевод, нажмите на кнопку на панели инструментов или на иконку, расположенную слева от исходной строки в списке строк C.
Повторяйте процесс до тех пор, пока все строки не будут помечены или . Затем выберите следующий контекст и продолжайте аналогично переводить строки.
Окно «Похожие переводы» E предлагает возможные переводы для текущей строки, которые берутся из глоссария. Текущий перевод для выбранной строки также присутствует в этом окне. Чтобы выбрать предлагаемый перевод щелкните два раза мышью по нему в окне «Похожие переводы» E или нажмите комбинацию клавиш, указанную справа в строке предлагаемого перевода.
Qt Linguist может автоматически проверить Ваши строки перевода с помощью проверочных тестов. Ошибки, возникшие при проверке текста, отображаются в окне предупреждений F.
Наконец, в окне «Исходники и формы» D отображается контекст, в котором используется текущая переводимая строка.
Когда перевод полностью закончен, выберите пункт меню «File|Save» для сохранения результата.
Предупреждение
Только помеченные как завершённые (то есть отмечены значками и ), языковые фразы попадают в бинарный файл переводов, остальные игнорируются.
По окончании работы над переводом ts-файл необходимо преобразовать в qm-файл. Для этого в приложении Qt Linguist выберите пункт меню «File|Release». Обычно после перевода нескольких строк, выполняются пробные запуски приложения, с созданным qm-файлом, чтобы визуально оценить качество перевода. Непереведенные строки при пробном запуске приложения будут отображаться на языке оригинала. Созданный qm-файл нужно поместить в каталог с переводами, расположенный в /usr/share/rosa-media-player/translations (в каждом проекте/приложении свой каталог) и затем запустить ROSA Media Player для проверки правильности перевода.
- Translation and localization
- Локализация и документирование
Qt/C++ — Урок 049. QTranslator — динамический перевод мультиязычного приложения на Qt
Рано или поздно разработчик приложений на Qt встречается с необходимостью поддержки мультиязычности в своём приложении. Вот тогда на помощь и приходит класс QTranslator и специализированное приложение для создания переводов Qt Linguist . Объект класса QTranslator используется для загрузки переводов из специального файла с расширением .qm, который является шестнадцатеричным файлом переводов. Данный файл компилируется из файла переводов в XML формате, который имеет расширение ts и прописывается в pro файле проекта. Данный файл содержит все строки приложения, которые были заключены в функцию tr(). Рекомендую задавать весь интерфейс приложения на английском языке, который будет языком по умолчанию, а переводы уже с нужным языком подгружать из файлов переводов. Если нужный файл перевода не будет найден, то автоматически будет загружен перевод на английском языке. Хотя Вы, конечно, можете применить и другой язык в качестве языка по умолчанию.
Пример загрузки перевода
Структура имени файла перевода играет важную роль в работе с QTranslator. Разберём минимальный пример.
#include "mainwindow.h" #include #include #include int main(int argc, char *argv[]) < QApplication a(argc, argv); QTranslator qtLanguageTranslator; qtLanguageTranslator.load(QString("QtLanguage_") + QString("ru_RU")); qApp->installTranslator(&qtLanguageTranslator); MainWindow w; w.show(); return a.exec(); >В данном примере создаётся объект класса QTranslator, в который загружается интересующий нас файл с указанием языка. В данном случае полное название файла переводов следующее QtLanguage_ru.qm. То есть дано общее для файла переводов название QtLanguage, а также префикс языка перевода _ru . Но вы уже заметили, что в качестве аргумента для метода load формируется строка QtLanguage_ru_RU. Это делается для того, чтобы определить нужный диалект языка, например американский (en_US) или британский (en_GB) английский. Но если в названии файла перевода нет указания диалекта, то будет выбран файл без уточнения диалекта, то есть QtLanguage_ru.qm. После того, как файл перевода загружен, его необходимо установить в приложение. В данном случае использован глобальный указатель на приложение qApp->installTranslator(&qtLanguageTranslator).
Создание файла перевода
После того, как мы разобрались с минимальным способом установки перевода в приложение, давайте разберёмся с тем, а как вообще можно создать перевод. Для создания перевода необходимо пользоваться функциями tr(), trUtf8(), translate() в приложении и т.д. То есть весь текст, который будет требовать перевода необходимо обрамлять именно в эти функции, чтобы потом создать файл перевода. Выглядеть это может следующим образом:
label->setText(QApplication::translate("MainWindow", "Select Language", 0)); label_2->setText(tr("Hello")); label_3->setText(trUtf8("Hello world"));
- lupdate - программа для формирования файла перевода из поля TRANSLATIONS в pro файле, а также обновления информации о всех новых строках в приложении, требующих перевода.
- lrelease - программа для сборки итогового файла переводов, который будет использоваться в приложении.
- Qt Linguist - непосредственно сам пакет для создания переводов.
Первым шагом, который необходимо будет сделать, после того, как в приложении уже прописаны строки, требующие перевода, это добавить файл для перевода в pro файл проекта. Возможно, Вы также захотите указать информацию о кодировке, которая применяется для перевода.
TRANSLATIONS += QtLanguage_ru.ts CODECFORSRC = UTF-8Далее необходимо воспользоваться утилитой lupdate для создания файла QtLanguage_ru.ts. В Qt Creator ищите здесь: Инструменты -> Внешние -> Linguist -> lupdate .
lupdate сообщит о результате поиска строк для перевода.
Запускается внешняя утилита «D:\Qt\5.6\mingw49_32\bin\lupdate.exe» D:/AndroidQT/QTProjects/QtLanguage/QtLanguage.pro Updating 'QtLanguage_ru.ts'. Found 4 source text(s) (0 new and 4 already existing) «D:\Qt\5.6\mingw49_32\bin\lupdate.exe» завершиласьДалее открываем Qt Linguist производим перевод всех строк, помечая, какие из них переведены (Это чисто служебная информация для самого переводчика, чтобы не вспоминать, что было переведено, а что нет.)
После создания перевода сохраните файл и скомпилируйте шестнадцатеричный файл перевода, воспользовавшись утилитой lrelease. Её можно найти в Qt Creator там же, где и lupdate, либо запустить из Qt Linguist: File -> Release.
Для применения файла необходимо будет поместить его в каталог с исполняемым файлом приложения, а в коде прописать путь к этому файлу.
Динамический перевод приложения
Загрузка перевода приложения - это хорошо, но что если необходимо менять перевод динамически? Давайте рассмотрим небольшой пример, в котором имеется QComboBox с указанием двух языков: английского и русского, по изменению которого будет происходить смена перевода в приложении.
Структура проекта
- QtLanguage.pro - профайл проекта;
- main.cpp - файл проекта с функцией main
- mainwindow.h - заголовочный файл главного окна приложения;
- mainwindow.cpp - файл исходных кодов главного окна приложения;
- mainwindow.ui - файл формы главного окна приложения.
mainwindow.ui
Я предпочитаю использовать графический дизайнер для создания графического интерфейса приложения, поскольку это ускоряет разработку, если не требуется чего-то сложного во внешнем виде приложения, поэтому создадим окно со следующим внешним видом.

В данном окне имеется:
С переводом которых мы и будем работать. Удобство графического дизайнера заключается также и в том, что он автоматически формирует метод retranslateUi(), который используется для изменения перевода всех подписей, которые используются в приложении, хотя можно и самим прописать вручную подобный метод, но лично я не хочу терять время на то, что отлично может быть создано автоматически. Например в данном уроке он выглядит следующим образом:
void retranslateUi(QMainWindow *MainWindow) < MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0)); label_2->setText(QApplication::translate("MainWindow", "The QTranslator class provides internationalization support for text output.An object of this class contains a set of translations from a source language to a target language. QTranslator provides functions to look up translations in a translation file. Translation files are created using Qt Linguist.", 0)); label->setText(QApplication::translate("MainWindow", "Select Language", 0)); > // retranslateUiQtLanguage.pro
Как говорилось выше, указываем имя файла перевода в профайле проекта.
#------------------------------------------------- # # Project created by QtCreator 2016-05-22T14:34:42 # #------------------------------------------------- QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = QtLanguage TEMPLATE = app SOURCES += main.cpp\ mainwindow.cpp HEADERS += mainwindow.h FORMS += mainwindow.ui TRANSLATIONS = QtLanguage_ru.ts CODECFORSRC = UTF-8main.cpp
А вот в этом файле ничего не будем менять.
#include "mainwindow.h" #include int main(int argc, char *argv[])
mainwindow.h
В заголовочном файле главного окна приложения необходимо объявить объекта класса QTranslator и переопределить метод changeEvent(QEvent *event) , в котором будет определяться событие смены языка приложения.
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include namespace Ui < class MainWindow; >class MainWindow : public QMainWindow < Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); protected: // Метод получения событий в главном окне приложения // В нём будет производиться проверка события смены перевода приложения void changeEvent(QEvent * event) override; private: Ui::MainWindow *ui; QTranslator qtLanguageTranslator; // Выделяем перевод в отдельном поле, иначе ничего работать не будет >; #endif // MAINWINDOW_Hmainwindow.cpp
Логика работы приложения будет следующей: при смене пункта в комбобоксе будет меняться перевод приложения.
Примечание. Не забудьте положить файл перевода с расширением qm рядом с исполняемым файлом приложения и собрать необходимые dll , иначе не заработает.
#include "mainwindow.h" #include "ui_mainwindow.h" #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) < ui->setupUi(this); // Задаём два пункта с текстом локалей в комбобоксе ui->comboBox->addItems(QStringList() comboBox, static_cast(&QComboBox::currentIndexChanged), [=](const QString &str)< qtLanguageTranslator.load("QtLanguage_" + str, "."); // Загружаем перевод qApp->installTranslator(&qtLanguageTranslator); // Устанавливаем перевод в приложение >); // Сделаем первоначальную инициализацию перевода для окна прилоежния qtLanguageTranslator.load(QString("QtLanguage_") + QString("ru_RU")); qApp->installTranslator(&qtLanguageTranslator); > MainWindow::~MainWindow() < delete ui; >void MainWindow::changeEvent(QEvent *event) < // В случае получения события изменения языка приложения if (event->type() == QEvent::LanguageChange) < ui->retranslateUi(this); // переведём окно заново > >Итог
В результате Вы получите приложение с поддержкой двух язык в своём графическом интерфейсе.
Видеоурок
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.
Рекомендуемые статьи по этой тематике
- Qt/C++ Урок 092. Создание переводов для внешних источников текста
- QML - Урок 025. Динамический перевод мультиязычного приложения на QML
- QML - Урок 020. Старт работы с Android Manifest в Qt Creator
По статье задано0 вопрос(ов)
Подписка на обсуждение 8
Подписка на раздел 343
Вам это нравится? Поделитесь в социальных сетях!
Qt linguist что это
26 сентября 2023
Скопировано
Qt — это библиотека классов C++ и набор инструментального программного обеспечения для создания кросс-платформенных приложений с графическим интерфейсом (GUI). Существуют вариации для других языков: PyQt для Python, QtRuby для Ruby, Qt Jambi для Java.

«IT-специалист с нуля» наш лучший курс для старта в IT
Кто пользуется Qt
- Разработчики на C++, которые создают десктопные и мобильные приложения.
- Разработчики ПО для интернета вещей или для микрокомпьютеров.
- Специалисты в области специализированного оборудования: embedded-систем, промышленных роботов и другой сложной автоматики.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Сферы применения
В основном Qt используют для создания очень быстрых и высокопроизводительных приложений. Это мессенджеры, игры или сложные ресурсоемкие программы. Он популярен в сферах, имеющих повышенные требования к безопасности ПО. Среди них:
- промышленность и транспортная отрасль. На C++ и на Qt пишут программы для роботов, которые используются на производствах, в перевозке грузов и других похожих отраслях. Qt используют при написании программного обеспечения для автомобилей, кораблей и других видов транспорта;
- MedTech. Фреймворк применяют при создании программных систем и интерфейсов для медицинского оборудования;
- IoT. На C++ с Qt пишут логику для «умных» приборов, которые подключаются к интернету вещей.
С использованием Qt написаны мессенджер Telegram, продукты Autodesk, окружение рабочего стола для многих систем под ядром Linux и пр.
Модули Qt
Тут перечислена часть основных модулей — блоков программного кода библиотеки Qt. В них содержатся классы и функции для создания приложений и работы с данными.
- QtCore — ядро фреймворка.
- QtGUI — компоненты для создания интерфейсов.
- QtNetwork — функции для работы с сетевыми соединениями.
- QtSql — компоненты для работы с базами данных на основе SQL.
- QtWidgets — модуль для работы с виджетами.
- QtXml — компоненты для обработки XML, специального формата хранения файлов.
- QtXmlPatterns — инструменты для работы с языками, которые обрабатывают данные XML и организуют к нему доступ.
- QtScript — классы внутреннего скриптового языка Qt Scripts.
- QtOpenGL — инструменты для работы с библиотеками, написанными по спецификации OpenGL.
- QtSvg — компоненты для обработки векторной графики.
- QtMultimedia — инструменты для работы с мультимедиа-файлами.
- QtWebEngine — ядро браузера Chromium, адаптированное под Qt.
- QtTest — компоненты для тестирования приложений.
- Qt3Support — поддержка старых версий фреймворка.
- QtCLucene — инструменты для автоматического поиска.
Что входит в Qt
Кроме библиотеки и ее модулей, Qt содержит дополнительное ПО, утилиты, справочники и внутренние языки.
Qt Creator. Это IDE, среда программирования. Внутри Qt Creator можно писать, компилировать и запускать код, тестировать его и выполнять отладку. Среда работает в Windows, Linux и macOS.
Qt Assistant. Большой справочник и библиотека документации. Он добавляет в среду возможность открывать и читать документы, сохраненные в QCH — внутреннем формате Qt для справочных документов. Ассистент позволяет быстро разобраться в работе нужного модуля.
QT Linguist. Инструмент помогает быстрее локализовать приложение на разных языках. Используется при создании программ, которые рассчитаны на мультиязычную аудиторию.
Qt Designer. Инструмент позволяет быстро создавать графические интерфейсы (GUI). Он поставляется вместе с фреймворком и подходит для разработки приложений, где большую роль играют визуальные компоненты. Интерфейс создается внутри инструмента с помощью C++, сохраняется в файл и подключается к проекту, написанному на Qt.
Qt Quick. Еще один инструмент для интерфейсов. Он отличается от предыдущего: GUI создается не на C++, а с использованием специального языка QML. Отличается и стиль описания компонентов. Qt Quick предназначен для быстрого и простого создания интерфейсов. Его часто применяют при разработке мобильных приложений и игр.
QML. Это язык для создания интерфейсов от команды Qt. Он основан на среде JavaScript и помогает быстро описывать графические интерфейсы. В Qt реализована полная поддержка QML, а сам язык встроен в инструмент Qt Quick.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Метаобъектная система в Qt
Так называется часть ядра, которая отвечает за взаимодействие процессов и объектов между собой. В Qt это взаимодействие построено на системе слотов и сигналов.

- Каждый компонент может посылать сигнал об изменении состояния.
- У других компонентов есть специальные функции-слоты, которые принимают сигналы и в зависимости от них совершают либо не совершают действие.
Это реализация идеи «Наблюдатель и наблюдаемое», позволяющая не повторять одинаковый код. Чтобы внедрить эту систему в C++, нужна метаобъектная компиляция. Она дополняет возможности «чистого» языка. Так объекты способны хранить больше информации, поэтому им можно добавить сигналы и слоты.
Такое взаимодействие нужно при построении графических интерфейсов. Например, программа должна реагировать на определенные действия пользователя. Также система необходима при асинхронном или многопоточном программировании.
Преимущества Qt
Кросс-платформенность. Qt — кросс-платформенный фреймворк. Это значит, что он существует для всех популярных операционных систем: Windows, Linux, iOS и Android. Фреймворк используют при разработке под любые устройства: от микроконтроллеров до суперкомпьютеров.
Высокая скорость. Программы на C++ быстро обрабатываются и запускаются. Также C++ — компилируемый язык программирования. Это значит, что компилятор транслирует исходный код на C++ в исполняемый файл, который содержит набор машинных инструкций, что тоже влияет на скорость.
Удобная среда разработки. Qt Creator — среда, в которой легко разобраться. В ней есть все необходимое, важные компоненты находятся под рукой, а сам инструмент интуитивно понятен. В нем удобно организована отладка, поэтому разработчику легче находить проблемные участки кода.
Быстрое создание GUI. Дополнительные инструменты помогают быстро спроектировать интерфейс и разработать дизайн. Благодаря Qt Creator и его возможностям фреймворк отлично подходит для создания приложений с упором на графический интерфейс.
Взаимодействие процессов. Благодаря метаобъектной системе Qt может более гибко управлять межпроцессным взаимодействием, чем «чистый» C++. Сейчас это преимущество не так актуально, потому что появились версии C++ 11 и выше. Но много проектов пользуется легаси-кодом, написанным на старых версиях языка. Там особенности взаимодействия все так же важны.
Документация. На официальном сайте представлена подробная документация, которая поможет разобраться с особенностями работы с Qt.
Недостатки Qt
Сложности с лицензией. У Qt тройное лицензирование. Существуют три варианта библиотеки, каждый из них — под своей лицензией. Один предназначен для коммерческой разработки, второй — для проектов с открытым исходным кодом, третий — для собственнических проектов. Для коммерческих проектов нельзя использовать бесплатную версию.
Большой вес приложений. Qt добавляет много новых сущностей, все они занимают место. Итоговый проект быстро работает, но много весит. Для десктопных приложений это не так критично, как для мобильных.
Обратная совместимость. Из-за обратной совместимости со старыми версиями разработчики поддерживают в том числе неоптимальные решения.
Сложность. C++ — сложный язык. В нем много абстракций, он не интуитивно понятный. Новичкам бывает трудно в нем разобраться.
Распространенность. В основном C++ используется только там, где нужна высокая скорость работы. Это программное обеспечение для сложных промышленных систем, медицинской техники, автомобилей, роботов. Для пользовательских приложений язык применяется реже, чем раньше. Поэтому Qt встречается не так часто, как другие фреймворки.
Как начать работу с Qt
Бесплатную версию фреймворка можно скачать на официальном сайте. Небольшая программа-инсталлятор Qt Installer подгрузит и установит необходимые компоненты. Можно воспользоваться бесплатной версией либо приобрести лицензию. Она подходит для крупных коммерческих проектов. Для тестирования инструмента достаточно триальной версии (полная версия Qt со сроком действия 10 дней).
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Статьи по теме:



