Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: viktand от Январь 02, 2014, 08:56



Название: Иконка в трее
Отправлено: viktand от Январь 02, 2014, 08:56
Здравствуйте.

Написал небольшую программу. Она должна сворачиваться в трей. Использовал QSystemTrayIcon. Все замечательно работает.
Но иконка в  трее появляется левом верхнем углу (трей сверху), а не справа, где все системные иконки. Как можно ее передвинуть к другим?

Иконка - буква "F" на картинке
(http://itmages.com/image/view/1411219/3a893720)



Название: Re: Иконка в трее
Отправлено: maint от Январь 02, 2014, 09:19
телепаты в отпуске. Не информации по операционной системе и кода, сказать нечего


Название: Re: Иконка в трее
Отправлено: Bepec от Январь 02, 2014, 10:59
И добавить то нечего ^.^


Название: Re: Иконка в трее
Отправлено: viktand от Январь 02, 2014, 11:59
Ubuntu 13.04, Unity.
Программа на Qt5.1

Вопрос-то, собственно, в том, существует ли метод (или свойство), определяющий положение иконки в трее (типа setGemetry). Почему можно узнать координаты (Geometry) иконки, а изменить их нельзя?
Предполагаю, что трей - он типа стека, куда сваливаются иконки на первое свободное место, поэтому и не управляется. Но у меня оно почему-то с другой стороны.

Код программы взят в основном из примера про QSystemTraiIcon и он работает без замечаний. Только иконка не там.


mainwindow.cpp:
Код:
 
...
QSystemTrayIcon     *trayIcon;
...
MainWindow::MainWindow(QWidget *parent) :  QMainWindow(parent),   ui(new Ui::MainWindow)  
{
   ...
    trayIcon=new QSystemTrayIcon;
    connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
             this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
    trayIcon->setIcon(QIcon(":/new/prefix1/ico"));
}

void MainWindow::on_pushButton_9_clicked()
{
    hide();
    trayIcon->show();
}


Попробовал запустить программу на нетбуке с Убунтой. Иконка выскочила вообще ниже трея и также слева. Но функционально все работает.

Попробовал на еще одной Убунте (12.04), тоже косяк. Может Qt c Uniti в этой части не дружит?


Название: Re: Иконка в трее
Отправлено: Bepec от Январь 02, 2014, 13:14
Проблема скорее всего не в Qt, а в вашей ОС/настройках и прочем. Впрочем опровергнуть мои слова может кто-нибудь ещё, у кого есть аналогичная ОС.

PS Qt не управляет треем. Функционал QSystemTrayIcon - кроссплатформенно поместить иконку в трей. Если у вас что-то съезжает, не тудыть втыкается - проблема в системных настройках.



Название: Re: Иконка в трее
Отправлено: maint от Январь 02, 2014, 13:39
юнити вообще загадочная штука, поставьте в виртуалке какой-нибудь kubuntu. Гляньте что получится. На самом деле не очень понятно, почему на стандартной убунту, не gtk использовать, да не мое дело. Пробуйте


Название: Re: Иконка в трее
Отправлено: viktand от Январь 02, 2014, 16:48
На Qt4.8 иконка вообще не появляется. Geometry() дает координаты -1;-1,  т.е. за пределами экрана.
Да, наверно дело в gtk.

На самом деле не очень понятно, почему на стандартной убунту, не gtk использовать, да не мое дело. Пробуйте

Ради одной иконки с gtk разбираться не хочется. Однажды делал программу на gtk, уперся в ошибку сегментации, которая возникала не всегда, а иногда. Плюнул, переписал все на Qt, так и остался на нем.


Название: Re: Иконка в трее
Отправлено: Alex Custov от Январь 02, 2014, 16:59
Цитировать
Да, наверно дело в gtk.

Gtk тут ни при чём, если иконка появляется отдельно, то трей просто не обнаруживается.


Название: Re: Иконка в трее
Отправлено: maint от Январь 02, 2014, 17:15
допустим gtk не причем, в icewm, иногда глюк, отдельно иконка, в отдельном окне. Размещается как WM сунул. У вас DE. Где то ошибка. Попробуйте скомпилить пример, с которого брали и посмотреть.Полностью.


Название: Re: Иконка в трее
Отправлено: viktand от Январь 03, 2014, 02:41
Скомпилировал стандартный пример из комплекта Qt-Creator'а. Работает точно также.

Видимо имеет место легкая несовместимость c Убунту на Юнити.


Название: Re: Иконка в трее
Отправлено: Alex Custov от Январь 03, 2014, 12:49
Скомпилировал стандартный пример из комплекта Qt-Creator'а. Работает точно также.
Видимо имеет место легкая несовместимость c Убунту на Юнити.

В терминале никаких ошибок во время выполнения нет?


Название: Re: Иконка в трее
Отправлено: viktand от Январь 04, 2014, 12:32
В том и проблема, что никаких ошибок не видно. Все ровно работает.


Название: Re: Иконка в трее
Отправлено: Fregloin от Январь 04, 2014, 14:51
У меня в xubuntu 13.4 вообще иконка в трее не отображается.


Название: Re: Иконка в трее
Отправлено: Dexel от Январь 17, 2014, 01:21
Если пример, в котором 3 рисунка переключаются в трэе, то он работает идеально на Kubuntu, Lubuntu, Xubuntu версий 13.10.


Название: Re: Иконка в трее
Отправлено: Fregloin от Январь 17, 2014, 15:18
5й qt? дайте пожалуйста исходник что бы я у себя проверил.


Название: Re: Иконка в трее
Отправлено: devnikor от Январь 26, 2014, 22:42
Код:
sudo apt-get install sni-qt


Название: Re: Иконка в трее
Отправлено: glum_psyche от Декабрь 17, 2014, 10:29
Конечно, тема старая, но добавлю сюда...

https://bugreports.qt-project.org/browse/QTBUG-31762

Полагают, что проблема с тем что ОС на GTK+ при выводе иконок в трей предлагается использовать GLIB, а не D-Bus, как это делает Qt.

Надеюсь, кому-то поможет...