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"))
据作者说:
最后,我们发出一个改变的信号,正如我们所看到的,这会导致 调用者调用的refreshTable()方法,后者依次格式化 使用调用者的格式字典表中的所有数字。
当我们发出时,我们怎么知道我们想申请哪个SLOT?基本上,如果我们有
self.connect(dialog, SIGNAL("changed"), self.refreshTable)
self.connect(dialog, SIGNAL("changed"), self.anotherMethod)
self.emit(...)
如何知道我们正在应用哪个广告位?或者我错过了一些信息?
感谢。
答案 0 :(得分:3)
self.emit
没有“知道”任何东西 - 它只是发出信号。
self.connect()
方法捕获信号并使用信号参数运行给定函数。
如果你将两个函数连接到一个信号,我认为两者都会运行。 你可能不应该这样做,因为它会使你的代码有点难以理解。
changed_signal
将调用其他函数。