2010-02-10 4 views
7

내 QT 앱에는 여러 개의 창이 있으며 때로는 창은 이미 열려 있지만 다른 창 아래에 놓여 있지만 사용자는 주 메뉴 창에서 파일을 열 수있는 옵션을 선택합니다.이 경우 단순히 파일을 불러 와서 만들려고합니다 현재의 것. 이제 QWidget-> raise를 사용하면이 창을 다른 창의 맨 위에 놓을 수 있지만 선택하지 않으면 그 작업이 필요합니다. 나는 QWidget-> setFocus를 시도했지만 아무것도하지 않는다. 그 동안 QWidget-> close와 QWidget-> show의 조합을 사용하고 있습니다 만, -> raise와 함께 사용할 명령이 있는지 알고 싶습니다. 그래서 내가 사용Qt에서 현재 창을 창으로 만들려면 어떻게해야합니까?

 pMission->raise(); 
     pMission->setFocus(Qt::ActiveWindowFocusReason); 

하지만 일을 일부러 :

 pMission->close(); 
     pMission->show(); 
+0

당신은 무엇을 ... "다른 모든 창 위에 이동하지만 선택 나던"의미합니까? –

+0

pMission-> raise(); 명령을 의미합니다. 창을 다른 모든 창 위에 놓지 만 "현재"창이되지는 않습니다. –

답변

8

은 당신이 이제까지는 QWidget :: activateWindow 봤어

나는 시도? 도움말 파일에서

,이 기능이

로가는 활성 창으로이 위젯을 포함하는 최상위 위젯을 설정합니다. 활성 창은 키보드 입력 포커스가있는 보이는 최상위 창입니다.

3

MacOS Lion on Qt 4.8.0에서 raise()만이 저에게 효과적이었습니다. activateWindow() 및 setFocus()는 그렇지 않습니다.

(I이 메이슨의 대답에 코멘트 만들기에 충분 카르마이없는)

+0

Qt 5.3.2, 32 비트에서,'activateWindow()'는 OS X 10.10 Yosemite에서 예상대로 (Mason이 설명한 것처럼) 작동합니다. – SexyBeast

관련 문제