Поиск по сайту:

Исправлена проблема с рамкой и тенью окна для приложений Qt в Ubuntu 23.10.

Ваших приложениях НЕТ границы окна и тени в Ubuntu 23.10? Вот быстрые обходные пути для приложений, основанных на наборе инструментов Qt UI.

В Linux Desktop приложения создаются с использованием другого набора инструментов пользовательского интерфейса. В то время как GNOME, Cinnamon и XFCE используют GTK3/4, KDE и LxQt используют Qt для своих приложений.

Ubuntu по умолчанию использует GNOME в качестве среды рабочего стола по умолчанию, но пользователь также может использовать приложения Qt, такие как qbittorrent, инструмент для создания снимков экрана ksnip, видеоредактор kdenlive и другие.

В Ubuntu 23.10 приложения Qt выглядят странно. У них очень тонкая граница без тени, которая выглядит как будто без границ. Это проблема исходного кода, которая также возникает в книжном черве Debian 12.

Приложения Qt в Ubuntu 23.10

Если у вас возникла похожая проблема, в этом руководстве будет показано, как ее исправить (обходной путь) двумя способами:

  • Плагин xcb QPA — для приложений Qt, работающих на X11.
  • Тема QGnomePlatform — приложение Qt включено в GNOME, но пока отсутствует поддержка Qt6 в Ubuntu.

ПРИМЕЧАНИЕ. В Ubuntu вы можете использовать как «Вариант 1», так и «Вариант 2». Они не конфликтуют друг с другом.

Вариант 1. Установите среду xcb QPA.

Если большинство ваших приложений Qt работают на X11, этот вариант — хороший выбор.

1. Просто откройте «Файлы», нажмите Ctrl+H, чтобы отобразить скрытые файлы/папки.

Затем найдите файл .profile, щелкните его правой кнопкой мыши и выберите «Открыть в текстовом редакторе».

2. Когда файл откроется, прокрутите вниз и добавьте в конце новую строку ниже:

export QT_QPA_PLATFORM=xcb

После сохранения файла выйдите из системы и снова войдите. Затем попробуйте запустить приложения Qt, чтобы увидеть результат.

Советы: не выходя из системы и не входя в нее снова, вы можете нажать Ctrl+Alt+T, чтобы открыть терминал. Затем запустите команду export QT_QPA_PLATFORM=xcb, чтобы установить среду для этого окна терминала. Наконец, запустите приложение Qt с этого терминала.

Вариант 2. Используйте тему QGnomePlatform.

В Fedora Linux есть проект QGnomePlatform, позволяющий приложениям Qt максимально хорошо вписаться в среду GNOME, хотя он больше не поддерживается из-за перехода на QAdwaitaDecorations.

Тема отлично работает и даже позволяет вашим приложениям Qt автоматически переключаться между светлым и темным режимами в соответствии с цветовым стилем рабочего стола.

Ubuntu 23.04 и Ubuntu 23.10 включают пакет в системный репозиторий, к сожалению, только для приложений Qt5!

1. Сначала нажмите Ctrl+Alt+T на клавиатуре, чтобы открыть терминал. Когда терминал откроется, выполните команду для установки пакета темы:

sudo apt install qgnomeplatform-qt5

2. Далее также откройте «Файлы», нажмите Ctrl+H, чтобы просмотреть скрытые файлы. Затем отредактируйте файл «.profile» и добавьте в конец новую строку:

export QT_QPA_PLATFORMTHEME='gnome'

Наконец, выйдите из системы и снова войдите, чтобы применить изменения.

После выполнения «Варианта 1» и «Варианта 2» все мои приложения Qt имеют собственные границы окон, хотя qBittorrent на основе Qt6 по-прежнему не очень хорошо вписывается в GNOME.

Приложения Qt в Ubuntu 23.10 после этого руководства

Запустите приложение Qt против Wayland

После выполнения «Варианта 1» ваши приложения Qt будут работать на X11.

Если вам нужно запустить приложение для Wayland, запустите приложение с терминала. Например, запустите kdenlive с помощью Wayland:

env QT_QPA_PLATFORM=wayland kdenlive

Советы: некоторые приложения могут работать в фоновом режиме в автоматическом режиме. Вам необходимо сначала закрыть его, прежде чем запускать аналогичную команду, описанную выше.

Или отредактируйте файл ярлыка приложения (обычно в разделе /usr/share/appliations) и настройте среду, изменив значение «Exec».

Например, отредактируйте ярлык приложения для Kdenlive, чтобы оно работало с Wayland:

sudo gnome-text-editor /usr/share/applications/org.kde.kdenlive.desktop

Статьи по данной тематике