我有一個QObject,它作爲一個控制器。 此QObject具有對QPushButton的引用。 此QOjbect有一個設置爲在QPushButton的單擊事件時被觸發的方法。QPushButton不會觸發點擊插槽(QObject的方法)
例:
class MyController(QObject):
def __init__(self, parent=None):
super(MyController, self).__init__(parent)
self.some_ref = ....
self.button = self.some_ref.button (returns QPushButton)
self.button.clicked.connect(self.button_clicked)
# @Slot(type)
def button_clicked(self):
print 'button clicked: ', self.sender()
# print 'button clicked (no sender req.)
這裏,button_clicked會不會被解僱。 我試着用@Slot()
,@Slot(QObject)
,@Slot(type)
,@Slot(str)
, @Slot(int)
裝飾它,但仍然不起作用。
我在做什麼錯?
如果我使用..clicked.connect(lambda: self.button_clicked)
它當然有效。所以我認爲這是一個類型不匹配,但不應該@Slot(..)
裝修已經修好了嗎?
謝謝。
你好!我的代碼庫有點複雜(很多元素),並仔細閱讀你的例子後,我意識到我「打破」了QMainWindow父引用,同時繞着某些類移動。現在它可以工作。非常感謝你!我想QObject引用是不夠的。 – Phil
很高興幫助你:) – Angel