Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ SystemTrayIcon координаты.

Автор: ernie 10.9.2010, 12:16

Доброго времени суток господа.
Встал такой вопрос,как определить местоположение системной панели(или трея),т.е. справа,слева,вверху или внизу экрана она находится?а так же отрисовывать свой виджет рядом с ней.Заранее спасибо.

Автор: Алексей1153 10.9.2010, 12:48

Цитата
QRect QSystemTrayIcon::geometry () const
Returns the geometry of the system tray icon in screen coordinates.

This function was introduced in Qt 4.3.

See also visible.

Автор: ernie 11.9.2010, 2:58

Алексей1153, я видел этот метод,но он почему-то всегда нули мне возвращает,вне зависимости от нахождения панели

Автор: Алексей1153 11.9.2010, 7:56

у меня нормально возвращает. Но только это прямоугольник иконка, а не лотка. Может, ты иконку не отобразил ?

А как прямоугольник самого лотка достать, только для винды знаю -

Раскрывающийся текст
HWND hShell_TrayWnd=::FindWindow("Shell_TrayWnd",0);//таскбар
if(hShell_TrayWnd && hShell_TrayWnd!=(HWND)-1)
{
    HWND hTrayNotifyWnd=::FindWindowEx(hShell_TrayWnd,0,"TrayNotifyWnd",0);//лоток с часами и иконками вместе
    if(hTrayNotifyWnd && hTrayNotifyWnd!=(HWND)-1)
    {
        HWND hSysPager=::FindWindowEx(hTrayNotifyWnd,0,"SysPager",0);//родитель части лотка с иконками
        if(hSysPager && hSysPager!=(HWND)-1)
        {
            HWND hToolBarWindow32=::FindWindowEx(hSysPager,0,"ToolBarWindow32",0);//сам лоток с иконками

            if(hToolBarWindow32 && hToolBarWindow32!=(HWND)-1)
            {
                RECT r;
                GetWindowRect(hToolBarWindow32,&r);
            }
        }
    }
}


я сейчас попытался как-то так сделать
    QRect rIcon=m_TrayIcon->geometry();
    
    QWidget* syspager=QDesktopWidget().childAt(rIcon.center());
    
    QRect rSyspager=syspager->geometry();


но syspager==0 ...
Возможно, в этом направлении покопать стоит

Автор: ernie 13.9.2010, 13:10

Алексей1153,спасибо за советы,разобрался,не в том месте просто вызывал geometry :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)