> Os Windows Vista Home Ru + sp1 > g++ (GCC) 3.4.5 (mingw-vista special r3) > Qt 4.5 (self build) > sip-4.7.9 (self build) > PyQt-win-gpl-4.4.4.zip (self build) > > I was unable to allocate a minimum example. Here is pseudocode situations: > [code] > > class BaseData(QObject): > def save(self, obj): > self.emit(QtCore.SIGNAL('datat_change'), obj) > > class Model(QAbstractItemModel): > def __init__(self, data): > # data Mast be derived from BaseData > self.connect( > data, QtCore.SIGNAL('data_change'), self.__data_changes) > > def __data_changes(self, arg): > row = self.__getRowForArg(arg) > ind = self.createIndex(row, 0, self.objects[row]) #!!! RuntimeError > > class Mixin(object): > data = None #Mast be derived from BaseData > result = None #Setup brfore accept() > def __init__(self, ...): > ... > def initUi(self): > ui = self.__ui = Ui_DlgFrame() > ui.setupUi(self) > model = self.__model = self.Model(self.dataCls.singleton()) > ui.tableView.setModel(model) > > class DlgFrame(QDialog, Mixin): > def __init__(self, data, parent=None, ...): > QDialog.__init__(self, parent) > Mixin.__init__(self, ...) > self.initUi() > > @classmethod > def getRes(cls, parent ...): > frm = cls(parent, ...) > if frm.exec_() == QtGui.QDialog.Accepted: > return frm._result > return None > > class FinalDlg(DlgFrame, ...): > # This class generated by function 'type' > dataCls = FinalData #Derived from BaseData > > class Main(QMainWindow): > def __init__(self): > data = FinalData.singleton() > > @QtCore.pyqtSignature('') > def on_btGetRes_clicked(self): > self.res = FinalDlg.getRes(self, ...) > > @QtCore.pyqtSignature('') > def on_btSaveRes_clicked(self): > self.data.save(self.res) > [/code] > Scenario for reproduction: > start Application > press btGetRes > press btSaveRes > > In PyQt-win-gpl-4.5-snapshot-20090419.zip error also. > _______________________________________________ > PyQt mailing list PyQt@riverbankcomputing.com > http://www.riverbankcomputing.com/mailman/listinfo/pyqt >
When you inherit from a Qt base class, you must always call the constructor of the base class in the derived class. For example: class BaseData(QObject): def __init__(self): QObject.__init__(self) ... class Model(QAbstractItemModel): def __init__(self, data): QAbstractItemModel.__init__(self) ... Best regards, Mads _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt