On Tue, 9 Nov 2010 20:29:43 +0100, TP <[email protected]> wrote: > Hello, > > I currently use QDataWidgetMapper with a custom property name: > > self.mapper.addMapping( widget, index, propertyName ) > > Now let us look at the private method populate() of > src/gui/itemviews/qdatawidgetmapper.cpp (Qt source code): > > ////// > void QDataWidgetMapperPrivate::populate(WidgetMapper &m) > { > if (m.widget.isNull()) > return; > > m.currentIndex = indexAt(m.section); > if (m.property.isEmpty()) > delegate->setEditorData(m.widget, m.currentIndex); > else > m.widget->setProperty(m.property, > m.currentIndex.data(Qt::EditRole)); > } > ////// > > So, the .setEditorData() method of the delegate is called when there is no > custom property name, and on the contrary the .setProperty() method of the > widget under consideration is called when a custom property name is > specified (this is my case). > > I use QTextEdit with a custom property name ("plainText" instead of the > default property "html"), I have tried to write my own QTextEdit, > QTextEdit2, with a specialized setProperty method to perform some action
> before setting the property: > > class QTextEdit2( QTextEdit ): > def __init__( self, parent = None ): > super( QTextEdit2, self ).__init__( parent ) > def setProperty( self, name, qvariant ): > # some code to do some action > super( QTextEdit2, self ).setProperty( name, qvariant ) > > But this *setProperty method is never called*, contrary of what we should > expect due to the code of QDataWidgetMapper.cpp above! > All is happening as if the setProperty method of the C++ parent object > (QTextEdit) is called, but not the method setProperty defined in the > Python > code of the used widget, QTextEdit2. > > What is the problem? setProperty() isn't virtual so you can't reimplement it in Python. Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
