Заставьте sniqt распознавать все возможности трея (или создайте рабочий индикатор в Qt)

Вот моя старая тема: как мне создать рабочий индикатор с помощью Qt/C++? где мне предложили использовать библиотеку QSystemTray для создания иконки в трее в Ubuntu для моего приложения.

Sniqt - это программа, которая позаботится обо всем остальном. Как известно, Ubuntu избавилась от значков в трее. Вместо этого теперь используются индикаторы и только индикаторы. Sniqt преобразует значки в Qt-трее в рабочие индикаторы.

Проблема в том, что он не делает очень приличное преобразование. Такие действия, как одиночный щелчок, средний щелчок и т. Д., Не работают, в то время как они выполняются в системах, которые поддерживают значки в трее.

Есть ли способ вернуть эти действия обратно? Могу ли я использовать значок QSystemTray и при этом продолжать выполнять эти интересные (и очень полезные, в моем случае) действия в Ubuntu?

Я был бы рад узнать ответ на другой поток, о котором я говорил ранее (как сделать рабочий индикатор с помощью библиотек GTK и предотвратить сбой), а также.

Ссылка для ошибки Sniqt: https://bugs.launchpad.net/sni-qt/+bug/1027652

2 ответа

Решение

Кажется, что Qt не поддерживает эту вещь, по крайней мере, в Ubuntu Unity, даже если у него есть сигнал "активирован". Поэтому я бы порекомендовал вам использовать GTK и обычный traicicon, я не вижу альтернативы с Qt. Вы можете связаться с разработчиками Qt для разъяснения этого.

Unity, по выбору, не поддерживает то, что вы называете "иконками приличного трея". Это индикаторы или ничего. Оттуда у вас есть несколько вариантов:

  • Обойтись с ограниченными возможностями индикатора. Вы можете установить меню, которое будет использоваться вашим индикатором, с помощью стандартного метода QSystemTray.setContextMenu().

  • Отсоедините ваше приложение от systray полностью. Например, превратите его в плавающую иконку на рабочем столе, которая сможет принимать средние и правые щелчки, как задумал Бог и Матиас Эттрих. Вы можете найти простой пример того, как это сделать, здесь: http://kde-apps.org/content/show.php/KEyes?content=51493 (При желании, делайте это только тогда, когда вы обнаружите, что работаете под Unity, то есть, если $DESKTOP_SESSION установлен в 'ubuntu'.)

  • Объявить Unity не поддерживается. Это не очень хороший вариант.

Хотите ли вы использовать вариант 1 или 2, в основном зависит от того, что делает ваше приложение.

Другие вопросы по тегам