Qt (Русский)

Qt — кроссплатформенный набор инструментов и виджетов для создания приложений, который использует стандартный язык программирования C++, а также специальный генератор кода (Meta Object Compiler, или moc) вместе с набором макросов, расширяющих возможности языка. Набор предоставляет широкие возможности по разработке приложений. Среди наиболее важных:

  • Работа на основных компьютерных платформах и операционных системах, а также на некоторых мобильных платформах.
  • Обширная поддержка возможностей интернационализации.
  • Полнофункциональная библиотека с поддержкой SQL баз данных, парсинга XML, управления потоками, сети и унифицированный кроссплатформенный программный интерфейс (API) для работы с файлами.
Состояние перевода: На этой странице представлен перевод статьи Qt. Дата последней синхронизации: 23 января 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

На основе фреймворка Qt развивается сообщество и программное обеспечение KDE. Qt лежит в основе других важных проприетарных и открытых программных проектов, таких как VLC, VirtualBox, Mathematica и многих других.

Установка

Qt 6.x и 5.x доступны в официальных репозиториях. Старые версии (4.x и 3.x) есть в AUR. Их можно установить с помощью следующих пакетов:

  • Qt 6.x входит в пакет qt6-base, документация — qt6-doc.
  • Qt 5.x входит в пакет qt5-base, документация — qt5-doc.
  • Qt 4.x предоставляется пакетом qt4AUR, документация — .
  • Qt 3.x можно установить из AUR с пакетом , документация — .

Выбор набора Qt по умолчанию

С помощью , вы можете выбирать, для какой версии Qt будут помещены исполняемые файлы (например, qmake) в /usr/bin. По умолчанию используется Qt5 (например, qmake-qt5).

Важно: Сейчас qtchooserAUR конфликтует с qt5-base. Вы можете попытаться установить его в /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.
https://invent.kde.org/plasma/breeze || breeze

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.
https://invent.kde.org/plasma/breeze || breeze-kde4AUR

    Таблицы стилей 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++

    QML

    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 (PySide2)

    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.

    QXcbConnection: XCB error: 2 (BadValue)

    Создайте следующий файл :

    Неправильное выравнивание или масштабирование графики

    Смотрите HiDPI#Qt 5.

    Смотрите также

    gollark: What if someone is harvesting the memes from your computer and posting them before you?
    gollark: 1 in 7 numbers are divisible by 7, you realize.
    gollark: It's not a bad input. You can trivially, if very slowly, put in any integer.
    gollark: I agree.
    gollark: I don't know if anyone knows. Presumably OAI has some sort of copyright grant to you, at least.
    This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.