我有一个问题,从主窗口设置四个子窗口之一的焦点。我尝试将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)
焦点不应该激活其中一个窗口并将其移到前面吗?
答案 0 :(得分:0)
setFocus()
的文档(强调添加):
void QWidget::setFocus ( Qt::FocusReason reason )
将键盘输入焦点提供给此窗口小部件(或其焦点代理) if 此窗口小部件或其父窗口之一是活动窗口。
据我了解,setFocus
不会激活顶级窗口小部件(窗口)。它会在活动窗口中更改焦点。
使用.activateWindow()
,可能与.raise()
一起使用。