2012-09-07 46 views
0

我有一個問題,將焦點從主窗口設置爲四個子窗口之一。我嘗試將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()