0

我在将焦点设置在主窗口的四个子窗口之一时遇到问题。我尝试将 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)

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

4

1 回答 1

0

文档setFocus()重点添加):

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

如果此小部件或其父级之一是活动窗口,则将键盘输入焦点赋予此小部件(或其焦点代理)。

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

使用.activateWindow(),可能与.raise()

于 2012-09-08T02:15:22.770 回答