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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QSystemTrayIcon->geometry врет координаты  (Прочитано 9119 раз)
kazenniy
Гость
« : Апрель 05, 2012, 14:32 »

Помогите решить проблему.
Пытаюсь вывести окно рядом с иконкой в трее, как у регулятора громкости. В конструкторе класса создается QSystemTrayIcon, задаются параметры и выводится иконка.
Код:
    m_ptrayIcon = new QSystemTrayIcon(this);
    m_ptrayIcon->setContextMenu(m_ptrayIconMenu);
    m_ptrayIcon->setToolTip("System Tray");

    slotChangeIcon();

    m_ptrayIcon->show();

В классе определен публичный метод
Код:
QRect QEcho::getTrayIconGeometry()
{
    return(m_ptrayIcon->geometry());
}

В main.cpp
Код:
    QEcho w;
    QRect rect;
    rect = w.getTrayIconGeometry();
    rect.setSize(QSize(100,100));
    w.setGeometry(rect);
Окно создается заданного размера, но всегда в левом верхнем углу экрана. Что не так?
Записан
Bepec
Гость
« Ответ #1 : Апрель 05, 2012, 14:34 »

Да не врёт он. Недавно сам пробовал наведение на иконку тестировать.

Видимо ты что-то не так делаешь.

update: Сразу говорю - твоих "огрызков кода" нехватит для помощи тебе Подмигивающий
Записан
kazenniy
Гость
« Ответ #2 : Апрель 05, 2012, 14:37 »

Я понимаю, что не так. Нужно разобраться, что именно не так.
Что нужно кроме "огрызков кода", чтобы разобраться в проблеме?
Может у кого нибудь есть рабочий пример использования QSystemTrayIcon->geometry?
« Последнее редактирование: Апрель 05, 2012, 14:39 от kazenniy » Записан
Bepec
Гость
« Ответ #3 : Апрель 05, 2012, 14:42 »

Выложи минимально компилируемый проект с твоей проблемой. В архиве. В сообщении. И будет тебе счастье.

Записан
kazenniy
Гость
« Ответ #4 : Апрель 05, 2012, 14:50 »

Спасибо за совет. Прилагаю архив проекта.
Записан
Bepec
Гость
« Ответ #5 : Апрель 05, 2012, 15:05 »

Всё открывается. Всё работает. Плохо конечно, что запоминает положение только один раз при открытии программы. ну да и не учитывает границу экрана.

А так всё ок.

PS красными стрелочками отмечено твоё окошечко.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #6 : Апрель 05, 2012, 15:10 »

В slotShowHide читайте и устанавливайте положение.
Записан
Bepec
Гость
« Ответ #7 : Апрель 05, 2012, 15:12 »

Lisandrel, а тему почитать, не?
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #8 : Апрель 05, 2012, 15:44 »

Bepec, я читал и даже приложенный пример компилировал, а что вас смутило в моём совете?
Записан
Bepec
Гость
« Ответ #9 : Апрель 05, 2012, 15:46 »

Что к теме он не относится совершенно :/
Записан
kazenniy
Гость
« Ответ #10 : Апрель 05, 2012, 15:47 »

Всё открывается. Всё работает. Плохо конечно, что запоминает положение только один раз при открытии программы. ну да и не учитывает границу экрана.

А так всё ок.

PS красными стрелочками отмечено твоё окошечко.
Странно. У меня на линуксе окошко всегда в левом верхнем углу появляется. С чем это может быть связано нет идей?
Записан
kazenniy
Гость
« Ответ #11 : Апрель 05, 2012, 15:51 »

В slotShowHide читайте и устанавливайте положение.
Попробовал, ничего не изменилось.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #12 : Апрель 05, 2012, 15:59 »

Что к теме он не относится совершенно :/
Шокированный
Я код
Код:
    rect = w.getTrayIconGeometry();
    rect.setSize(QSize(100,100));
    w.setGeometry(rect);
предложил перенести в slotShowHide. Почему это к теме не относится?

kazenniy, тогда смотрите, что вам возвращает m_ptrayIcon->geometry().
Не исключено, что в Linux'е она возвращает неверное значение, например правильные размеры, но координаты всегда нулевые.
Записан
kazenniy
Гость
« Ответ #13 : Апрель 05, 2012, 16:22 »

Размеры правильные отдает, координаты нет.
Нет идей почему так происходит?
Записан
kazenniy
Гость
« Ответ #14 : Апрель 05, 2012, 16:56 »

Все чудесатее и чудесатее.
Если запустить в режиме отладки с контрольной точкой на получении геометрии, то она получается правильно и окошко где нужно рисуется.
Ничего не понимаю =(
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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