Элементы пользовательского интерфейса приложения Qt случайным образом отображаются как пустые / черные в Docker - PullRequest
0 голосов
/ 25 сентября 2018

Я подготовил Dockerfile для создания образа Docker моего приложения Qt .Для запуска приложения я использую X - я включаю доступ к X-серверу (xhost +local:root), затем использую следующую команду для его запуска:

docker run -it --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" mindforger:latest mindforger

Проблема в том, что некоторые элементы Qt UI (пункты меню), диалоговые окна, ...) отображаются пустыми в черном цвете (случайным образом) - посмотрите на скриншот ниже:

enter image description here

Я на Ubuntu 16.04.5с докером 18.06 и Qt 5.01.

Ответы [ 3 ]

0 голосов
/ 03 июня 2019

В моем случае (приложение Qt5) я решил эту проблему, добавив параметр --shm-size 128M, монтирование /dev/shm:/dev/shm также должно работать.

0 голосов
/ 18 июня 2019

У меня была такая же проблема, и я нашел это решение , которое вы должны запустить после запуска док-контейнера.Как только определенный контейнер Docker запущен, выполните следующую команду в контейнере Docker.

export QT_GRAPHICSSYSTEM="native"

После того, как он вставлен и выполнен в сеансе терминала Docker, запустите нужное приложение QT, и эта проблема черного ящика должна исчезнуть.далеко.Вы даже можете вставить эту опцию в .bashrc вашего докера, если вы не хотите запускать его каждый раз вручную.

0 голосов
/ 10 мая 2019

У меня была такая же проблема, и я не мог ее решить формально.Но мы нашли альтернативный обходной путь, чтобы не отображать ошибку:

В нашем случае у нас есть четыре QComboBox в окне.Наша проблема заключалась в том, что после запуска приложения второе (иногда первое) поле со списком, которое вы щелкнули, отображало черное всплывающее окно.Итак, мы сделали инициализацию окна с двумя фиктивными комбинированными окнами, вызвали метод showPopup, а затем скрыли всплывающие окна и комбинированные окна.Таким образом, пользователь не может заметить ошибку.Я надеюсь, что вы можете сделать что-то подобное с вашим приложением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...