0

在 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
       ....
4

1 回答 1

1

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

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

于 2012-06-22T23:55:25.950 回答