[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: Re: [PyQt] SIP gives error when trying to subclass QVariant
From: Phil Thompson <phil () riverbankcomputing ! com>
Date: 2013-04-17 9:27:37
Message-ID: 61a621c9bbee430e87354e0694266def () localhost
[Download RAW message or body]
On Tue, 16 Apr 2013 11:53:37 -0700, Nate Reid <gnatty7@hotmail.com> wrote:
> Versions: Redhat Linux EL6Qt 4.7.1 (also tested with 4.8.2)PyQt:
> 4.10Python: 2.7.4Sip: 4.14
> Sip 4.14, and 4.13 as well gives me the following error when trying to
> generate code on the following sip file:sip -x VendorID -t WS_X11 -x
> PyQt_NoPrintRangeBug -t Qt_4_7_1 -g -I /usr/pic1/root/share/sip/PyQt4 -c
.
> python/TestQVariant.sipsip: python/TestQVariant.sip:6: A class,
exception,
> namespace or mapped type has already been defined with the same name
> // TestQVariant.sip:%Module TestQVariant
> %Import QtCore/QtCoremod.sip
> class TestQVariant : public QVariant{%TypeHeaderCodeinclude
> "TestQVariant.h"$Endpublic: TestQVariant(void);
> TestQVariant(const QVariant &v); TestQVariant(int v);
> TestQVariant(double v); TestQVariant(const QString &v);
> TestQVariant(const TestQVariant &a);
> bool hasName(void) const; const QString &name(void) const;
> void setName(const QString &name);
> };%End
> // TestQVariant.h#ifndef TestQVariant_h#define TestQVariant_h
> #include <QtCore/QVariant>#include <QtCore/QString>
> class TestQVariant : public QVariant{public: TestQVariant(void) {
> }
> TestQVariant(const QVariant &v) : QVariant(v) { }
> TestQVariant(int v) : QVariant(v) { }
> TestQVariant(double v) : QVariant(v) { }
> TestQVariant(const QString &v) : QVariant(v) { }
> TestQVariant(const TestQVariant &a) : QVariant(a),
> mName(a.mName) { }
> TestQVariant &operator=(const TestQVariant &a) {
> QVariant::operator=(a); mName = a.mName; return *this;
> } bool hasName(void) const { return
!mName.isEmpty();
> } const QString &name(void) const { return mName;
> } void setName(const QString &name) { mName = name;
> } private: QString mName;};
> #endif
>
> Is this related to the API version that QVariant is using?
Yes.
> This is with
> Python 2.7, so it should default to '2'.
Actually '1'.
> Is there some other name I need
> to use for the QVariant class to get this to work?
No. Basically you can't sub-class from classes that have multiple
implementations (I've now documented this more clearly). This is a SIP bug
but not one that I'm going to rush to fix.
Have you got a real use case? (Given how Qt uses QVariant I can't see how
a sub-class can be useful.)
Phil
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic