Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ruzik от Апрель 03, 2012, 20:21



Название: Меню в QSystemTrayIcon
Отправлено: ruzik от Апрель 03, 2012, 20:21
Здравствуйте, у меня есть QSystemTrayIcon и такой код:
Код
C++ (Qt)
//--System tray icon
connect(systemTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason))
, this, SLOT(createPopupSystemTrayIconMenuAndConnectIt(QSystemTrayIcon::ActivationReason)));
Код
C++ (Qt)
void RizekFaster::createPopupSystemTrayIconMenuAndConnectIt(QSystemTrayIcon::ActivationReason reason)
{
if (reason != QSystemTrayIcon::Context)
return;
 
delete popupSystemTrayMenu;
       popupSystemTrayMenu = new QMenu(this);
 
/*Create actions of menu*/
 
systemTrayIcon->setContextMenu(popupSystemTrayMenu);
}
Но прикол в том, что само меню теперь не открывается, а если преписать это в конец:
popupSystemTrayMenu->show();
То меню будет вызываться в середине экрана, как можно это исправить
Заранее спасибо!


Название: Re: Меню в QSystemTrayIcon
Отправлено: lit-uriy от Апрель 03, 2012, 20:24
что-то я в код не въехал.
Ты для начала пришиб контекстное меню, а потом его пытаешься использовать?


Название: Re: Меню в QSystemTrayIcon
Отправлено: ruzik от Апрель 03, 2012, 20:36
Сильно сократил код, смотрите новую версию, после удаления меню создается новое


Название: Re: Меню в QSystemTrayIcon
Отправлено: mutineer от Апрель 03, 2012, 20:40
А зачем ты это все делаешь? сделал один раз setContextMenu и оно само должно при кликах появляться


Название: Re: Меню в QSystemTrayIcon
Отправлено: ruzik от Апрель 03, 2012, 20:46
У меня меню должно быть каждый раз разное, так как его содержимое зависит от содержимого модели используемой в программе, по этому при каждом клике и приходиться создавать новое меню


Название: Re: Меню в QSystemTrayIcon
Отправлено: mutineer от Апрель 03, 2012, 20:48
Но появится оно все равно только при следующем клике. Но при следующем клике ты его убиваешь...
А может изменять меню, когда данные в модели меняются?


Название: Re: Меню в QSystemTrayIcon
Отправлено: ruzik от Апрель 03, 2012, 20:58
Понятно, буду пытаться сделать по-другому
Спасибо за помощь!