焦点事件改变了吗?(An event for focus changed?)

2019-08-04 10:20发布

我移植我的Visual Basic 6的程序PyQt的。

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

我正在寻找在PyQt的,但没有成功,同样的事情。 任何的想法?

Answer 1:

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



Answer 2:

不知道您是否正在谈论的窗口小部件的窗口获取/失去焦点或嵌入另一个赢得/失去键盘焦点的窗口小部件,但这里有两种情况

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


文章来源: An event for focus changed?