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

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

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

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

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

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

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

9
задан 13 April 2017 в 15:25

2 ответа

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

0
ответ дан 13 April 2017 в 15:25

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

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

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

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

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

0
ответ дан 13 April 2017 в 15:25

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

Похожие вопросы: