Есть диалоговое окно с QDialogButtonBox, на котором две кнопки OK и Close. В процессе работы надо сделать так, чтобы нажатие на Close не закрывало диалог, а вызывало другой слот. Раньше делал так
self.btnClose = self.buttonBox.button( QDialogButtonBox.Close ) # отсоединение QObject.disconnect( self.buttonBox, SIGNAL( "rejected()" ), self.reject ) # и подключение к другому слоту QObject.connect( self.btnClose, SIGNAL( "clicked()" ), self.stopProcessing ) .... # восстанавливаем исходное состояние QObject.disconnect( self.btnClose, SIGNAL( "clicked()" ), self.stopProcessing ) QObject.connect( self.buttonBox, SIGNAL( "rejected()" ), self.reject )
self.btnClose = self.buttonBox.button( QDialogButtonBox.Close ) self.buttonBox.rejected.disconnect( self.reject ) self.btnClose.clicked.connect( self.stopProcessing ) ... self.btnClose.clicked.disconnect( self.stopProcessing ) self.buttonBox.rejected.connect( self.reject )
line 147, in prepareProcessЗаменяю эти строки подключения на старый стиль — все работает. В чем может быть дело или это у меня карма плохая?
self.buttonBox.rejected.disconnect( self.reject )
TypeError: disconnect() failed between ‘rejected’ and ‘reject’