2012-09-07 4 views
0

기본 창에서 4 개의 자식 창 중 하나에 포커스를 설정하는 데 문제가 있습니다. 나는 4 중 하나에 setFocus를 시도했지만 메인 윈도우는 여전히 초점을 유지한다. 네 개의 창 중 어느 창에 초점을 맞출 지 선택할 수있는 콤보 상자가 있습니다. 각각의 과부들은 별도의 모니터에 있습니다.pyqt4 : 단일 부모로부터 생성 된 4 개의 자식 창에 포커스 설정

from PyQt4 import QtGui, QtCore 
import numpy as np 
from ui_GuiMask import Ui_MainWindow 



class MainWindow(QtGui.QMainWindow): 
    def __init__(self, parent = None): 
    QtGui.QMainWindow.__init__(self, parent) 
    QtGui.QWidget.__init__(self, parent) 
    self.ui = Ui_MainWindow() 
    self.ui.setupUi(self) 

QtCore.QObject.connect(self.ui.cb_projectorSelector, QtCore.SIGNAL("currentIndexChanged(int)"), self.setProjectorFocus) 


self.maskProjector_1 = MaskWindow(screen = 0) 
self.maskProjector_1.show() 
self.maskProjector_2 = MaskWindow(screen = 0) 
self.maskProjector_2.show() 


def setProjectorFocus(self): 

whichProj = self.ui.cb_projectorSelector.currentIndex() 
if whichProj == 0:    
    self.maskProjector_1.setFocus(True) 
    self.maskProjector_2.setFocus(False) 

elif whichProj == 1:     
    self.maskProjector_1.setFocus(False) 
    self.maskProjector_2.setFocus(True) 

초점 중 하나를 활성화하고 앞면으로 옮겨서는 안됩니까?

답변

0

setFocus()에 대한 문서 (강조 추가) :

void QWidget::setFocus (Qt::FocusReason reason)

는이 위젯에 키보드 입력 포커스를 제공 (또는 그 초점 프록시) 이 위젯 또는 부모 중 하나 인 경우 활성 창.

잘 알고 있듯이 setFocus은 최상위 위젯 (창)을 활성화하지 않습니다. 활성 창 내에서 초점을 변경합니다.

.activateWindow()을 사용하십시오 (아마도 .raise()과 함께).