Qt (Русский)
Qt — кроссплатформенный набор инструментов и виджетов для создания приложений, который использует стандартный язык программирования C++, а также специальный генератор кода (Meta Object Compiler, или moc) вместе с набором макросов, расширяющих возможности языка. Набор предоставляет широкие возможности по разработке приложений. Среди наиболее важных:
- Работа на основных компьютерных платформах и операционных системах, а также на некоторых мобильных платформах.
- Обширная поддержка возможностей интернационализации.
- Полнофункциональная библиотека с поддержкой SQL баз данных, парсинга XML, управления потоками, сети и унифицированный кроссплатформенный программный интерфейс (API) для работы с файлами.
На основе фреймворка Qt развивается сообщество и программное обеспечение KDE. Qt лежит в основе других важных проприетарных и открытых программных проектов, таких как VLC, VirtualBox, Mathematica и многих других.
Установка
Qt 6.x и 5.x доступны в официальных репозиториях. Старые версии (4.x и 3.x) есть в AUR. Их можно установить с помощью следующих пакетов:
Выбор набора Qt по умолчанию
С помощью , вы можете выбирать, для какой версии Qt будут помещены исполняемые файлы (например, qmake) в /usr/bin
. По умолчанию используется Qt5 (например, qmake-qt5).
/usr/local
, но официально это не поддерживается. Смотрите FS#51308.Используя переменные окружения
Чтобы выбрать конкретный набор Qt, вы можете создать переменную окружения . Например, чтобы выбрать Qt4, добавьте в файл инициализации вашей командной оболочки (например, или ).
Используя файл конфигурации
Вы можете выбрать версию набора Qt по умолчанию, создав символическую ссылку на один из файлов .conf в каталоге . Например, чтобы выбрать Qt4, создайте ссылку на :
$ ln -s
Внешний вид
Qt5
Qt5 выбирает стиль, основываясь на текущей среде рабочего стола:
- В KDE Plasma он использует текущий выбранный стиль Qt. Это можно настроить через Параметры системы (systemsettings), раздел Внешний вид > Оформление приложений.
- Для Cinnamon, GNOME, MATE, LXDE, Xfce он использует GTK (QGtkStyle).
- В других средах рабочего стола используется Fusion.
Если вы хотите принудительно установить внешний вид и поведение интерфейса приложений Qt5, установите переменную окружения с названием желаемого стиля. В частности, для GTK пропишите (не забудьте установить плагины, требуемые для нужного вам стиля). Приложения Qt5 также поддерживают опцию -style
.
В состав Qt5 входят стили Fusion и Windows. В официальных репозиториях и AUR доступны дополнительные стили:
- Breeze — Стиль Plasma Desktop.
Qt4
Qt4 пытается имитировать поведение текущей среды рабочего стола, если только они не столкнётся с какими-либо проблемами или жестко закодированными настройками.
- В KDE Plasma он использует текущий выбранный стиль Qt. Это можно настроить через Параметры системы (systemsettings), раздел Внешний вид > Оформление приложений.
- Для Cinnamon, GNOME, Xfce он использует GTK (QGtkStyle).
- В других средах рабочего стола используется Windows.
Для тех, кто хочет изменить внешний вид и оформление приложений Qt4, в пакете qt4AUR есть инструмент графического интерфейса QQt Configuration (qtconfig-qt4). Он предлагает простой интерфейс для настройки внешнего вида приложений Qt4, включая стиль, цвета, шрифты и некоторые другие параметры.
Qt хранит все свои настройки в файле (общесистемный) или ~/.config/Trolltech.conf
(пользовательский). В этом файле довольно сложно ориентироваться, так как он содержит много информации, не относящейся к внешнему виду, но для любых изменений вы можете просто добавить в конец файла и таким образом перезаписать все предыдущие значения (убедитесь, что добавляете свои изменения в секцию ).
Например, чтобы изменить тему на QtCurve, добавьте:
В состав Qt4 входят стили CDE, Cleanlooks, GTK, Motif, Plastique, Windows. В официальных репозиториях и AUR доступны дополнительные стили:
- Breeze — Стиль Plasma Desktop.
Таблицы стилей Qt
Интересным способом модификации внешнего вида приложений Qt является использование таблиц стилей, которые представляют собой обычные CSS-файлы. Используя таблицы стилей, пользователь может изменить внешний вид любого виджета в приложении.
Чтобы запустить приложение, используя указанную таблицу стилей, просто передайте путь к файлу в опции :
$ qt_приложение -stylesheet стиль.qss
Для получения подробной информации о таблицах стилей Qt смотрите официальную документацию или руководство. Пример таблицы стилей вы можете найти на этой странице.
GTK и Qt
Если вы используете одновременно приложения GTK+ и Qt, их внешний вид может несколько различаться. Если вы хотите, чтобы стили отображения в точности соответствовали друг другу, смотрите статью Единый вид приложений GTK и Qt.
Настройка приложений Qt5 в окружениях, отличных от KDE Plasma
В отличие от Qt4, Qt5 не поставляет утилиту qtconfig для настройки шрифтов, значков или стилей. Вместо этого он попытается использовать настройки из запущенной среды рабочего стола. В KDE Plasma или GNOME это работает хорошо, но в других менее популярных средах рабочего стола или оконных менеджерах это может привести к отсутствию значков в приложениях Qt5. Один из способов решения этой проблемы — подделать информацию о среде рабочего стола, прописав переменную окружения или , а затем использовать соответствующее приложение конфигурации для выбора нужного набора значков.
Другим решением является использование , который предоставляет Qt5 QPA, не зависящий от среды рабочего стола, и утилиту настройки. После установки запустите и настройте стили, а затем пропишите переменную окружения QT_QPA_PLATFORMTHEME=qt5ct
, чтобы эти настройки стали применяться приложениями Qt. Также можно использовать опцию при запуске приложения Qt5.
имеет более хорошую интеграцию с приложениями KDE, в том числе KDE QML.
Если некоторые значки отсутствуют и вы видите такие ошибки:
Icon theme "oxygen" not found. Icon theme "oxygen" not found. Error: standard icon theme "oxygen" not found!
то установите и oxygen-icons.
Разработка
Поддержка платформ
Qt поддерживает большинство доступных сегодня платформ, включая даже весьма малоизвестные. Полный список поддерживаемых платформ вы можете найти в статье на Wikipedia.
Инструменты
Список официальных инструментов разработки для Qt:
- qmlscene — Инструмент для загрузки документов QML, облегчающий разработку и отладку приложений QML.
- https://doc.qt.io/qt-5/qtquick-qmlscene.html || Qt 5: qt5-declarative, Qt 4 QML Viewer: qt4AUR
Другие языки программирования
Qt имеет привязки ко многим популярным языкам программирования. Полный список поддерживаемых языков вы можете найти на странице https://wiki.qt.io/Language_Bindings
Приведенные ниже примеры отображают окно с сообщением 'Hello world!'.
C++
- Пакет: qt5-base
- Сайт: https://www.qt.io/developers/
- Команда сборки:
- Команда запуска:
./hello
QML
- Пакет: .
- Сайт: https://doc.qt.io/qt-5/qtquick-qmlscene.html
- Команда запуска:
hello.qml
import QtQuick 2.3 Rectangle { id: page width: 400; height: 100 color: "lightgray" Text { id: helloText text: "Hello world!" anchors.horizontalCenter: page.horizontalCenter anchors.verticalCenter: page.verticalCenter font.pointSize: 24; font.bold: true } }
Python (PyQt)
- Пакет: — привязки Python 3.x для Qt 5
- Сайт: https://riverbankcomputing.com/software/pyqt/intro
- Команда запуска:
Python (PySide2)
- Пакет:
- Сайт: https://wiki.qt.io/Qt_for_Python
- Команда запуска:
C#
Смотрите QtSharp.
Решение проблем
Настройка журнала Qt
При использовании KDE и/или любой другой среды рабочего стола на основе Qt в журнал systemd может записываться много отладочной информации.
Изменить поведение можно с помощью переменной окружения . Например, чтобы полностью отключить запись в журнал:
Чтобы отключить только отладочные записи, используйте QT_LOGGING_RULES="*.debug=false"
.
Не применяется тема значков
Начиная с Qt 5.1, поддержка SVG переместилась в модуль. Поскольку qt5-base не зависит от , может случиться так, что qt5-base установлен, а нет. Так как SVG по умолчанию не поддерживается, значки молча пропускаются, и может показаться, что тема иконок не используется. Явная установка решает проблему.
Не применяется тема для приложений, запущенных от имени root
Поскольку файл темы пользователя () не читается другими аккаунтами, выбранная тема не будет применяться к приложениям X, запущенным от имени root. Возможные решения:
- Создать символические ссылки, например
# ln -s /home/''пользователь''/.config/Trolltech.conf /etc/xdg/Trolltech.conf
- Настроить тему в общесистемном файле:
- Настроить тему пользователя root
Не учитывается стиль Qt 4
Если чистые приложения Qt4 (не KDE) не придерживаются выбранного вами стиля Qt4, то вам, вероятно, придется указать Qt4, как найти стили KDE (Oxygen, Phase и т.д.). Вам просто нужно установить переменную окружения . Например:
QT_PLUGIN_PATH=$HOME/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/
После этого сможет найти ваши стили KDE, и всё снова будет выглядеть красиво!
Также можно создать символическую ссылку из каталога стилей QT4 в каталог стилей KDE4:
# ln -s /usr/lib/{kde,qt}4/plugins/styles/название_темы
Все приложения Qt5 перестали запускаться после обновления Qt5
Если вы видите такую ошибку:
Qt FATAL: Cannot mix incompatible Qt library (version 0x50900) with this library (version 0x50901)
то, скорее всего, вы используете стороннюю платформу тем Qt5 или плагин стиля, который не был перекомпилирован под последнюю версию Qt5. Они обычно используют приватные заголовки Qt, что означает, что они зависят от точной версии Qt, а не только от совпадающего soname. Выясните, какую тему/стиль вы используете, проверив переменные окружения и , и пересоберите соответствующий пакет AUR.
Неправильное выравнивание или масштабирование графики
Смотрите HiDPI#Qt 5.