2012-06-22 38 views
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 
     .... 

回答

1

如果当你调用连接仍然存在2点连接的对象,不应由本身导致崩溃。

根据你的代码,你似乎没有断开以前连接的插槽(例如self.s.valueChanged.disconnect()),并且这可能会导致每个信号都被多次调用插槽,这意味着您的应用程序可能会减慢速度随着时间的推移,并可能崩溃,取决于你在插槽中做什么。

+0

不知道disconnect()是我的知识中的缺陷。也许它确实,也许它不能解释崩溃,但下周我会解决这个问题并找出答案。 – DarenW