2015-01-16 5 views
2

SLT 11에서 QT 4.8.5 (이 버전은 내 고객에게 필수)에서 응용 프로그램 도구 모음을 개발 중입니다. 나는 또한 멀티 모니터 환경.QT 4.8.5 - 팝업 메뉴가 잘못된 위치에 표시됨 - SLED 11

내 목적은 지정된 모니터에 확장 된 툴바를 표시하고 다른 모니터에는 축소 된 툴바를 표시하는 것입니다. 기본 도구 모음에서 시스템에 설치된 다른 응용 프로그램을 열 수 있습니다. 이러한 응용 프로그램은 QT 기반이 될 수도 있고 그렇지 않을 수도 있습니다.

도구 모음을 도킹 창으로 처리하고 바탕 화면의 공간을 확보하려면 (다른 창을 도구 모음에서 이동할 수 없으며 창 최대화 도구 모음이 표시되지 않도록) xlib 호출을 사용했습니다 .

내가 공간 예약 방법 :

void ToolbarWindow::dock(int x, int y, int width, int height) 
{ 

#ifdef Q_WS_X11 //only define on Qt 4.X 

    Display *display = QX11Info::display(); 

    // Change the window type in order to make it DOCK. 
    Atom tmp = XInternAtom(display, "_NET_WM_WINDOW_TYPE_DOCK", False); 
    XChangeProperty(display, 
       winId(), 
       XInternAtom(display, "_NET_WM_WINDOW_TYPE", False), 
       XA_ATOM , 
       32, 
       PropModeReplace, 
       (unsigned char *)&tmp, 1); 

    // Reserve the space. 
    // [0]left, [1]right, [2]top, [3]bottom, [4]left_start_y, [5]left_end_y, [6]right_start_y, [7]right_end_y, [8]top_start_x, [9]top_end_x, [10]bottom_start_x, [11]bottom_end_x 
    long insets[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 
    insets[2] = height; 
    insets[8] = x; 
    insets[9] = x+width; 

    XChangeProperty(display, 
       winId(), 
       XInternAtom(display, "_NET_WM_STRUT", False), 
       XA_CARDINAL , 
       32, 
       PropModeReplace, 
       (unsigned char *)&insets, 4); 

    XChangeProperty(display, 
       winId(), 
       XInternAtom(display, "_NET_WM_STRUT_PARTIAL", False), 
       XA_CARDINAL , 
       32, 
       PropModeReplace, 
       (unsigned char *)&insets, 12); 

#endif 

} 

모든 것이 잘 작동하는 것 같다,하지만 몇 가지 테스트 후 나는 QT 드롭 다운 메뉴와 큰 문제가 있었다. QT가 드롭 다운 위치를 계산할 때 윈도우가있는 모니터와 독립적으로 최대 예약 높이를 고려한 것 같습니다.

여기에는 문제를 나타내는 이미지가 두 개 있습니다.

첫 번째 이미지는 QTCreator 드롭 다운 메뉴에서도 문제가 테스트 될 수 있음을 보여줍니다. Dropdown problem on QTCreator

두 번째 이미지는 커스텀 QMainWindow에서 콤보 박스 드롭 다운에서 어떤 현상이 발생했는지 확인하기 위해 만든 테스트입니다. 문제가 동일하게 보입니다.

Dropdown problem on QT window

는 또한 두 번째 모니터에 기본 도구 모음의 높이 아래의 창을 이동하면 드롭 위치가 올바른지 추가 할 수 있습니다. 또한 다른 비 QT 애플리케이션에는 이러한 동작이 없으므로 드롭 다운 위치 지정 중에는 QT 4.8.5 문제라고 생각합니다.

누구든지이 문제의 해결책을 찾는데 도움을 줄 수 있습니까?

고마워요.

답변

관련 문제