在 main.py
def setNumberFormat2(self):
dialog = numberformatdlg2.NumberFormatDlg(self.format, self)
self.connect(dialog, SIGNAL("changed"), self.refreshTable)
dialog.show()
并在form.py
:
class NumberFormatDlg(QDialog):
def __init__(self, format, parent=None):
.....
self.connect(buttonBox.button(QDialogButtonBox.Apply),
SIGNAL("clicked()"), self.apply)
self.connect(buttonBox, SIGNAL("rejected()"),
self, SLOT("reject()"))
self.setWindowTitle("Set Number Format (Modeless)")
def apply(self):
....
self.emit(SIGNAL("changed"))
据作者说:
最后,我们发出一个 changed 信号,正如我们所见,这会导致调用者的 refreshTable() 方法被调用,这反过来又使用调用者的格式字典格式化表中的所有数字。
当我们发出时,它如何知道我们要应用哪个 SLOT?本质上,如果我们有
self.connect(dialog, SIGNAL("changed"), self.refreshTable)
self.connect(dialog, SIGNAL("changed"), self.anotherMethod)
怎么self.emit(...)
知道我们申请的是哪个插槽?还是我错过了一些信息?
谢谢。