我很难理解信号是否包含一些数据。
例如,信号windowTitleChanged
包含一个str类型的数据,该数据需要传递到它的插槽:
self.windowTitleChanged.connect(lambda x : self.onTitle(x))
## or self.windowTitleChanged.connect(self.onTitle) which also automatically sends a data
def onTitle(self,k):
print(k)
而像clicked
这样的一些信号不发送数据,除非它们被设置为checkable
(包含bool类型的数据)。在下面的代码中单击pushBotton没有任何作用(尽管def buttonClicked(self,pressed)
需要一个pressed
参数,但这对我来说并没有引起错误,这让我感到惊讶
btn2.clicked.connect(self.buttonClicked)
def buttonClicked(self,pressed):
if pressed:
self.statusBar().showMessage("l")
在我看来,像windowTitleChanged
这样的一些信号包含数据并且可以在插槽中使用,而有些信号包含非类型数据(比如clicked
信号)。
我所理解的是正确的吗
是的,你说得对。通过创建自定义信号,您甚至可以看到这一点
在上面的代码段中,如果发出带有
bool
的analyze_completed
信号,则连接到此信号的插槽将接收该bool
作为参数相关问题 更多 >
编程相关推荐