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

9

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

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

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

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

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

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

hytromo
источник
Разве это не нормальное поведение для всех индикаторов? Они принимают только события левого клика и прокрутки.
Тимо
Нет! Если вы, например, щелкнете средний значок звука, звук будет отключен / включен. В моем приложении я хочу заставить его выйти.
Hytromo
@mateo_salta, пожалуйста, сравните его с askubuntu.com/questions/158323/…
hytromo 13.12.12

Ответы:

0

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

Ceppo93
источник
1
Извините, но Qt действительно имеет эту функциональность на значках в трее. Действие моего лотка работает безупречно в других системах. Это проблема Ubuntu и ее упорство с индикаторами. Sniqt может решить проблему
hytromo
2
Я могу подтвердить, что это не вина Qt. Я также сомневаюсь, что проблема заключается в sniqt. Я не знаю, что индикаторы приложений даже способны различать левый и правый клики. Это было постоянным источником разочарования и для меня.
Натан Осман
1

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

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

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

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

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

Balinares
источник