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)

разве фокус не должен активировать одно из окон и переместить его вперед?


person Dave    schedule 07.09.2012    source источник


Ответы (1)


Документы для setFocus() (Выделение добавлено ):

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

Передает фокус ввода с клавиатуры этому виджету (или его прокси-серверу фокуса), если этот виджет или один из его родителей является активным окном.

Насколько я понимаю, setFocus не будет активировать виджет верхнего уровня (окно). Он меняет фокус в активном окне.

Используйте .activateWindow(), возможно, вместе с .raise().

person Avaris    schedule 08.09.2012