krab22
May 3, 2018, 4:16 p.m.

Проблема с запуском Qt5 приложения

Qt5

При запуске приложения выводится:

This application failed to start because it could not find or load the Qt platform plugin "xcb" in "".
Available platform plugins are: xcb.
Reinstalling the application may fix this problem

Платформа Fedora 22.

Плагин есть. ldd находит все библиотеки. Не запускается только под простым пользователем. Под рутом и другим пользователем-администратором все стартует нормально.

На первый взгляд - не хватает каких то прав...

Но каких???

Помогите!!!

2

Do you like it? Share on social networks!

13
Evgenii Legotckoi
  • May 3, 2018, 4:20 p.m.

Попробуйте добавить в pro-файл вот эти настройки

linux {
    QT       += x11extras
    CONFIG   += link_pkgconfig
    PKGCONFIG += x11
}
    krab22
    • May 3, 2018, 5 p.m.

    а можно по подробнее про то, что вы написали - что к чему?

      Evgenii Legotckoi
      • May 3, 2018, 5:09 p.m.

      Ну у вас в проекте должен быть .pro файл, когда вы пишите приложение. В этот pro-файл необходимо прописать данные строчки.

      В данном случае включается поддержка расширений для x11, в том числе и поддержка библиотек xcb. Само собой библиотеки должны быть установлены.

      Или ваш вопрос не связан с программированием?
        krab22
        • May 3, 2018, 5:17 p.m.

        Вопрос то связан.. и я отлично понимаю что такое файл проекта - хотя в Qt новичок,
        но не понятно что такое и x11extras и зачем это нужно.
        Если нужна еще какая то библиотека, то почему под другими пользователями(пользователями с расширенными наборами прав) все стартует за милу душу?

          Evgenii Legotckoi
          • May 3, 2018, 5:30 p.m.
          • (edited)

          Вот цитата из официальной документации

          Qt X11 Extras позволяет программисту Qt писать приложения для платформы Linux/X11. Приложения, разработанные с помощью Qt, также могут быть развернуты в нескольких других настольных и встроенных операционных системах без необходимости переписывать исходный код
          Для использования xcb нужно включать поддержку данного расширения.

          PKGCONFIG - нужен чтобы найти эти библиотеки, в обычном варианте они могут не находиться. Скорее всего ваш случай. В своё время я нашёл это решение, а до запуска из-под рута не доходил.

          То, что находит из под рута... ну так под рутом и прав на доступ больше, для конкретного пользователя значит библиотеки недоступны или не установлены.
            krab22
            • May 3, 2018, 5:40 p.m.

            Спасибо за разъяснения!
            Как я понял XCB используется для отлова нажатия горячих клавиш в X11. Т.е. указанная Вами добавка к проекту необходимо если я использую компоненты с HotKey (например QAction). И соответственно в данном случае требуется подключение x11extras.
            Я правильно понял?

            А как на Wayland - тоже требуется ее подключать?

            Про рута... Работает и не из под рута - у пользователей входящих в группу администраторов - далеко не root.

              Evgenii Legotckoi
              • May 3, 2018, 5:46 p.m.

              мм... хоткеи и так будут работать, но в рамках приложения, а вот если вам нужны глобальные хоткеи (когда приложение свёрнуто в трей например)... вот тогда потребуется xcb или иные платформозависимые решения. Qt не предостовляет решения для глобальных хоткеев.

              Я в своё время занимался данным вопросом, как результат, написал небольшую утилиту для глобальных хоткеев, которая работает под WinAPI и Linux/x11 - это QGlobalShortcut

              Насчёт Wayland не обладаю актуальной информацией, но вроде как пока что требуется xcb.

              Насчёт администраторов, в любом случае прав-то больше. здесь нужно разгребать, куда у них доступ есть и т.д., тогда возможно получите полноценный ответ, но это вам нужно у себя смотреть, что, да как.
                krab22
                • May 3, 2018, 5:51 p.m.

                ок! Спасибо!
                Просто хотелось бы понять когда это подключение требуется, а когда нет.
                Завтра попробую. Отпишусь

                  Evgenii Legotckoi
                  • May 3, 2018, 5:55 p.m.

                  По факту это подключение требуется тогда, когда вы начинаете подключать заголовочные файлы x-библиотек.

                  Вот здесь полный список и минимальные версии таких библиотек.
                  Также класс QX11Info требует настройки x11extras .

                  В остальных случаях не должны требоваться такие настройки.
                    krab22
                    • May 4, 2018, 8:30 a.m.

                    В общем то логично. А какие элементы GUI(и сопутствующих типов) используют X-библиотеки? Список таких элементов есть?

                      krab22
                      • May 4, 2018, 8:48 a.m.

                      Сделал по Вашим рекомендациям - нет фифекта(кроме зависимости еще от одной библиотеки).... :-(
                      Все таки проблема кроется, на мой взгляд, где то в правах....
                      Но где? и в каких правах?

                        Evgenii Legotckoi
                        • May 7, 2018, 4:04 p.m.

                        Я бы отталкивался от того списка библиотек, которые я привёл в предыдущем сообщений. Просто почитать описание, какая библиотека и за что отвечает. Но я бы на вашем месте не запаривался на этот счёт до тех пор, пока не встанет конкретная проблема/задача. Там уже достаточно сразу будет ясно, что если что-то не так, то нужно будет использовать что-то платформозависимое.


                        Что касается GUI, то всё, что уже реализовано в QWidgets/Qt Quick (в плане отрисовки внешнего вида и т.д.) не должно требовать какого-то функционала из x11extras .
                          Evgenii Legotckoi
                          • May 7, 2018, 4:07 p.m.

                          Не знаю, честно, я работал с тем, что требовало xcb, но такой проблемы с правами не имел. Может это какой-то такой прикол Fedora, но не могу сказать, я работаю с Ubuntu и KDE Neon, который в свою очередь базируется на Ubuntu.

                            Comments

                            Only authorized users can post comments.
                            Please, Log in or Sign up
                            • Last comments
                            • AK
                              April 1, 2025, 11:41 a.m.
                              Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                            • Evgenii Legotckoi
                              March 9, 2025, 9:02 p.m.
                              К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                            • VP
                              March 9, 2025, 4:14 p.m.
                              Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                            • ИМ
                              Nov. 22, 2024, 9:51 p.m.
                              Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
                            • Evgenii Legotckoi
                              Oct. 31, 2024, 11:37 p.m.
                              Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup