2

我正在将我的 Visual Basic 6 程序移植到 PyQt。

我需要一直调用一个函数来设置一些小部件的启用/禁用,我不想调用一个函数太多次,所以我找到了一个事件,当焦点从一个小部件更改为另一个小部件时,我可以调用我的小部件管理器功能。

我在 PyQt 中寻找同样的东西,但没有成功。任何的想法?

4

2 回答 2

11

不确定您是在谈论小部件的窗口获得/失去焦点还是嵌入在另一个获得/失去键盘焦点的小部件,但这两种情况都适用

class MyWidget(QtGui.QWidget):

    def __init__(self, parent = None):
        super(MyWidget, self).__init__(parent)
        self.installEventFilter(self)

    def eventFilter(self, object, event):
        if event.type() == QtCore.QEvent.WindowActivate:
            print "widget window has gained focus"
        elif event.type()== QtCore.QEvent.WindowDeactivate:
            print "widget window has lost focus"
        elif event.type()== QtCore.QEvent.FocusIn:
            print "widget has gained keyboard focus"
        elif event.type()== QtCore.QEvent.FocusOut:
            print "widget has lost keyboard focus"


        return False
于 2012-12-20T14:06:44.337 回答
6

信号QApplication::focusChanged(QWidget * old, QWidget * now)就是你想要的。

于 2012-12-20T14:01:20.563 回答