pyqt4:设置从单亲生成的4个子窗口的焦点

时间:2012-09-07 17:10:29

标签: pyqt4 setfocus

我有一个问题,从主窗口设置四个子窗口之一的焦点。我尝试将setFocus设置为四个中的一个,但主窗口仍然保持焦点。我有一个组合框,可以让您选择四个窗口中的哪一个成为焦点。每个寡妇都在一个单独的监视器上。

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)

焦点不应该激活其中一个窗口并将其移到前面吗?

1 个答案:

答案 0 :(得分:0)

setFocus()的文档(强调添加):

  

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

     

将键盘输入焦点提供给此窗口小部件(或其焦点代理) if   此窗口小部件或其父窗口之一是活动窗口

据我了解,setFocus不会激活顶级窗口小部件(窗口)。它会在活动窗口中更改焦点。

使用.activateWindow(),可能与.raise()一起使用。