On Sat, 26 Jun 2010 00:17:36 -0400, Blaine Bell <[email protected]> wrote: > When I subclass a c++ object which is wrapped in SIP, I have found that > I need to include all functions of that C++ object in the SIP interface > that are used from within that class (or any of its subclasses). For > example, this one class I am using in python subclasses a class that > subclasses QAbstractProxyModel, and overrides the function > "Qt::ItemFlags flags(const QModelIndex &index) const;". I do not use > this function at all in python, but it doesn't get called unless I > include it in the SIP interface. Can someone explain what is happening > here? I would think that if that class is being instantiated properly, > then inside C++ the interface should have all of the functions > implemented. Is it possible I am not doing something right here?
SIP will generate a C++ reimplementation of flags() that works out if there is a Python reimplementation and calls it if so. If there is no Python version then it explicitly calls the most specific C++ implementation that it knows about. It has to explicitly call it (i.e. with an explicit scope) to avoid recursion. If you haven't told it about a more specific version (because it doesn't appear in the corresponding .sip file) then it can never be called. Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
