krab22
3 мая 2018 г. 16:16

Проблема с запуском 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

Вам это нравится? Поделитесь в социальных сетях!

13
Evgenii Legotckoi
  • 3 мая 2018 г. 16:20

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

linux {
    QT       += x11extras
    CONFIG   += link_pkgconfig
    PKGCONFIG += x11
}
    krab22
    • 3 мая 2018 г. 17:00

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

      Evgenii Legotckoi
      • 3 мая 2018 г. 17:09

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

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

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

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

          Evgenii Legotckoi
          • 3 мая 2018 г. 17:30
          • (ред.)

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

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

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

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

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

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

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

              Evgenii Legotckoi
              • 3 мая 2018 г. 17:46

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

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

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

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

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

                  Evgenii Legotckoi
                  • 3 мая 2018 г. 17:55

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

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

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

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

                      krab22
                      • 4 мая 2018 г. 8:48

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

                        Evgenii Legotckoi
                        • 7 мая 2018 г. 16:04

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


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

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

                            Комментарии

                            Только авторизованные пользователи могут публиковать комментарии.
                            Пожалуйста, авторизуйтесь или зарегистрируйтесь