我將我的Visual Basic 6程序移植到PyQt。焦點事件改變了?
我需要調用一個函數來設置一些小部件啓用/禁用所有的時間,我不想調用一個函數太多次,所以我發現了一個事件,當焦點從一個小部件更改爲另一個小部件,我可以調用我的小部件管理器功能。
我在PyQt中尋找同樣的東西,但沒有成功。任何想法?
我將我的Visual Basic 6程序移植到PyQt。焦點事件改變了?
我需要調用一個函數來設置一些小部件啓用/禁用所有的時間,我不想調用一個函數太多次,所以我發現了一個事件,當焦點從一個小部件更改爲另一個小部件,我可以調用我的小部件管理器功能。
我在PyQt中尋找同樣的東西,但沒有成功。任何想法?
不知道您是否正在談論的窗口小部件的窗口獲取/失去焦點或嵌入另一個贏得/失去鍵盤焦點的窗口小部件,但這裏有兩種情況
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
也許我不明白什麼是小部件。在我看來,這不是一個窗口,但是這個窗口中的對象(如按鈕或網格等)在qt中爲 –
,即使是qmainwindow也是一個小部件。默認情況下,一個小部件可能有自己的窗口,或者嵌入在其父窗口中(除非它是一個qdialog)。爲了測試這個,創建一個沒有父節點的qpushbutton然後show()它,它將有它自己的窗口。所有這一切說,我的代碼仍然顯示如何得到通知,如果當你的部件接收到鍵盤焦點 – vikki
也,我沒有說一個部件是一個窗口,在我的答案我說「...部件的窗口... 「,我在說的是有一個父窗口小部件顯示在它自己的窗口中,如qmainwindow或qdialog或qwizard,所有這些都直接或間接地從qwidget繼承 – vikki
是的,它是!但是我必須在window()類之外連接信號。聽起來很奇怪?班上應該包含什麼以及課外應該包含什麼? –