Russian Qt Forum
Май 15, 2024, 23:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Иконка в трее  (Прочитано 10174 раз)
viktand
Гость
« : Январь 02, 2014, 08:56 »

Здравствуйте.

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

Иконка - буква "F" на картинке


Записан
maint
Гость
« Ответ #1 : Январь 02, 2014, 09:19 »

телепаты в отпуске. Не информации по операционной системе и кода, сказать нечего
Записан
Bepec
Гость
« Ответ #2 : Январь 02, 2014, 10:59 »

И добавить то нечего ^.^
Записан
viktand
Гость
« Ответ #3 : Январь 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 в этой части не дружит?
« Последнее редактирование: Январь 02, 2014, 13:10 от viktand » Записан
Bepec
Гость
« Ответ #4 : Январь 02, 2014, 13:14 »

Проблема скорее всего не в Qt, а в вашей ОС/настройках и прочем. Впрочем опровергнуть мои слова может кто-нибудь ещё, у кого есть аналогичная ОС.

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

Записан
maint
Гость
« Ответ #5 : Январь 02, 2014, 13:39 »

юнити вообще загадочная штука, поставьте в виртуалке какой-нибудь kubuntu. Гляньте что получится. На самом деле не очень понятно, почему на стандартной убунту, не gtk использовать, да не мое дело. Пробуйте
Записан
viktand
Гость
« Ответ #6 : Январь 02, 2014, 16:48 »

На Qt4.8 иконка вообще не появляется. Geometry() дает координаты -1;-1,  т.е. за пределами экрана.
Да, наверно дело в gtk.

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

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

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Январь 02, 2014, 16:59 »

Цитировать
Да, наверно дело в gtk.

Gtk тут ни при чём, если иконка появляется отдельно, то трей просто не обнаруживается.
Записан
maint
Гость
« Ответ #8 : Январь 02, 2014, 17:15 »

допустим gtk не причем, в icewm, иногда глюк, отдельно иконка, в отдельном окне. Размещается как WM сунул. У вас DE. Где то ошибка. Попробуйте скомпилить пример, с которого брали и посмотреть.Полностью.
Записан
viktand
Гость
« Ответ #9 : Январь 03, 2014, 02:41 »

Скомпилировал стандартный пример из комплекта Qt-Creator'а. Работает точно также.

Видимо имеет место легкая несовместимость c Убунту на Юнити.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Январь 03, 2014, 12:49 »

Скомпилировал стандартный пример из комплекта Qt-Creator'а. Работает точно также.
Видимо имеет место легкая несовместимость c Убунту на Юнити.

В терминале никаких ошибок во время выполнения нет?
Записан
viktand
Гость
« Ответ #11 : Январь 04, 2014, 12:32 »

В том и проблема, что никаких ошибок не видно. Все ровно работает.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #12 : Январь 04, 2014, 14:51 »

У меня в xubuntu 13.4 вообще иконка в трее не отображается.
Записан
Dexel
Гость
« Ответ #13 : Январь 17, 2014, 01:21 »

Если пример, в котором 3 рисунка переключаются в трэе, то он работает идеально на Kubuntu, Lubuntu, Xubuntu версий 13.10.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #14 : Январь 17, 2014, 15:18 »

5й qt? дайте пожалуйста исходник что бы я у себя проверил.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 19.