Не удается закрыть QMenu, открытое через dbus, дважды щелкнув в другом приложении - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть 2 приложения, одно имеет QMenu, которое можно открыть через DBus (приложение «меню»), а другое может открыть это меню, дважды щелкнув («нажав» приложение).

Когда я открываюменю двойным щелчком в приложении «щелкнув», меню не закрывается, когда я щелкаю за пределами меню.

Меню закрывается, когда:

  • открывается через qdbus втерминал
  • открывается одним кликом в «кликающем» приложении
  • нажатие клавиши Esc

Если меню принадлежит тому же приложению, то оно закрывается.

Вот 2 приложения

https://gitlab.com/fbg/qmenu-dbus-test

Ожидаемый результат:

  1. открыть оба приложения
  2. двойной щелчок "кликающим" приложением
  3. меню из приложения "меню" открывается
  4. щелкните за пределами меню
  5. меню закрывается

Фактический результат:

1-4такой же, как указано выше

меню не закрывается, если я не нажму в окне приложения "меню" или не нажму клавишу Esc

Редактировать:

Поведение происходит в Solus 4.0

  • Версия KDE Plasma: 5.15.3

  • Версия KDE: 5.56.0

  • Версия Qt: 5.12.2

В lubuntu (lxqt) меню отображается на доли секунды, а затем закрывается.

Более простой способ проверить это - использовать qdbusviewer.

  1. построить и запустить testqmenudbus2
  2. открыть qdbusviewer
  3. найти службу org.TestQMenu
  4. найти метод showMenu в TestQMenu.local.MainWindow
  5. метод двойного щелчка

1 Ответ

0 голосов
/ 06 апреля 2019

Решено это путем добавления

QThread::msleep(150);

к методу dbus перед отображением меню.

Возможно, это всего лишь обходной путь.

...