连接,将插槽重新连接到信号 - 这会导致崩溃吗?

时间:2012-06-22 19:07:24

标签: pyqt4 signals-slots

在PyQt4应用程序中,我根据用户操作将滑块连接到一个或另一个插槽。我更改插槽分配以响应按钮点击。几个不同的插槽做了不同的事情,太不同了,无法通过一些“if”语句合并到一个插槽中。

此应用经常崩溃。我想知道是否犹豫是否像这样将飞机重新分配给一个信号。这会导致PyQt4内部的悬空指针,内存损坏还是其他不好的东西?如果我正在做的事情没问题,我会在别处寻找这个错误。

这是我的应用程序的非常草图版本:

def MyThing(QWidget):

    (in some approprate place)
       self.s = QSlider()


    def MethodOne(self):   # this is a slot handling a button click
       self.s.valueChanged.connect(self.someslot1)

    def MethodTwo(self):   # likewise
       self.s.valueChanged.connect(self.someslot2)

    def someslot1(self, svalue):  # slider movement handler
       (compute, show info based on slider position)

    def someslot2(self, svalue):   # similar to someslot1
       ....

1 个答案:

答案 0 :(得分:1)

如果在调用connect时仍然存在2个连接对象,则不应导致崩溃。

根据您的代码,您似乎没有断开先前连接的插槽(例如,使用self.s.valueChanged.disconnect()),这可能导致每个信号多次调用两个插槽,这意味着您的应用程序可能会随着时间的推移而变慢,并且可能会崩溃,具体取决于您在插槽中的操作。