2011-08-26 4 views
2

내 Qt 앱의 최상위 창인 QGLWidget에 showFullScreen() 및 showNormal()을 호출하여 전체 화면을 켜고 끌 수있었습니다. 그러나, 나는 더 복잡한 GUI의 일부로 QGLWidget에서 파생 된 gl 창을 갖고 싶고, 다른 창 부품 (다른 glwidget 포함)이있는 다른 메인 창을 부모로 삼아이 "기본"gl 창을 전체 화면으로 이동할 수있게하고 다시 키 입력으로. 이 작업을 수행하는 방법을 보여주는 문서를 찾을 수 없었습니다. 어떤 도움이 필요합니까?다른 윈도우에 부모 역할을 할 때 QGLWidget 전체 화면 전환

감사합니다.

+0

기본적으로 숨겨져있는이 케이스에 대해 별도의 QGLWidget을 만들 수 있습니다. 창 크기를 변경 ('setParent()'참조)하면 전체 화면으로 변경하고 다시 복원하려면 부모를 다시 변경할 수 있습니다. – bkausbk

답변

0

기본적으로 중첩 된 QGLWidget 또는 부모가 showFullScreen()을 QGLWidget의 다른 인스턴스와 호출하는 방법이 필요합니다. 그런 다음 돌아갈 길이 있습니다.

키 누르기 또는 마우스 클릭으로 이것을 수행하려면 전체 화면 표시 및 전체 화면 숨기기를 사용할 수있는 옵션으로 사용할 때 포커스가있는 모든 위젯에 대해 QKeyEvent 및 QMouseEvent를 다시 구현해야합니다.

GUI의 QMainWindow 부분에서 몇 개의 팝업 창이 나타나고 개별적으로 표시되는지에 따라 다른 창에서도 전체 화면 QGLWidget 숨기기/표시를 지원하는 키 누르기를 지원할 수 있습니다. 여기

는하지만 마우스 상호 작용, 내가 한 번 그것을 어떻게의 코드입니다 :

void MyWidget::enterEvent(QEvent *) 
{ 
    if(this->isFullScreen()) 
    { 
     textItem->setText("Click again to return"); 
    } 
    else 
     textItem->setText("Click for full screen"); 

    //  if(!clearTextTimer->isActive()) 
    //   clearTextTimer->start(); 
    clearTextTimer->start(); 
    this->update(); 
} 

void MyWidget::mouseReleaseEvent(QMouseEvent *event) 
{ 
    static MyWidget * w = 0; 
    if(pixItem->contains(mapToScene(event->pos())) 
      && event->button() != Qt::NoButton 
      && w == 0) 
    { 
     w = new MyWidget(); 
     w->showFullScreen(); 
    } 
    else 
    { 
     if(this->isMaximized()) 
      this->close(); 
     else 
      w->close(); 
     delete w; 
     w = 0; 
    } 
} 

또한 grabKeyboard()와 releaseKeyboard()에서보고 싶은 것입니다.