Re: [PyQt] [SIP] is there a Qt5 example for SIP?
On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote: Hi Phil, I am trying to see if SIP will help me with a task I'm trying to solve. I started out by trying the More Complex C++ Example in the docs. However, I'm using Qt5, and the example is for Qt4. I see the pyqtconfig is part of Qt4, but not Qt5. No problem, except pyqtconfig is pretty integrated into the example, and as a beginner, I'm not sure how to take pyqtconfig out. Is there a Qt5 example for SIP? Look at the configure.py for PyQt5. A minimal build system would just be a shell script that invoked sip then the C++ compiler then the linker. The only thing you need to consider is to use the right -t flags to sip and these can be found by introspecting current versions of PyQt. Phil Thanks for the pointers. I've got the example working. But now I'm having trouble extending the example. I've got a bunch of enums I need to make available, some of which have overlapping names. I've been handling this by putting them in different namespaces. But sip is complaining about that. I saw an old mailing list question on the topic (http://www.riverbankcomputing.com/pipermail/pyqt/2007-August/016847.html), but no solution was posted. My .h file is: // Define the interface to the hello library. #include qlabel.h #include qwidget.h #include qstring.h #if defined HELLO_DLL # define HELLO_DLLSPEC Q_DECL_EXPORT #else # define HELLO_DLLSPEC Q_DECL_IMPORT #endif namespace MyNamespace { enum MyEnum { No=0, Yes=1}; }; class HELLO_DLLSPEC Hello : public QLabel { // This is needed by the Qt Meta-Object Compiler. Q_OBJECT public: Hello(QWidget *parent = 0); private: // Prevent instances from being copied. Hello(const Hello ); Hello operator=(const Hello ); }; #if !defined(Q_OS_WIN) void setDefault(const QString def); #endif My .sip file is: // Define the SIP wrapper to the hello library. %Module hello %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %If (Qt_5_0_0 -) namespace MyNamespace { %TypeHeaderCode #include hello.h %End enum MyEnum { No=0, Yes=1}; }; class Hello : public QLabel { %TypeHeaderCode #include hello.h %End public: Hello(QWidget *parent /TransferThis/ = 0); private: Hello(const Hello ); }; %If (!WS_WIN) void setDefault(const QString def); %End %End The compiler (linker, actually) is complaining about missing symbols: Creating library release\hello.lib and object release\hello.exp siphellocmodule.obj : error LNK2001: unresolved external symbol struct _pyqt4ClassTypeDef sipTypeDef_hello_MyNamespace (?sipTypeDef_hello_MyNamespace@@3U_pyqt4ClassTypeDef@@A) release\hello.dll : fatal error LNK1120: 1 unresolved externals What's the proper way to describe this to sip? Thanks! ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Re: [PyQt] [SIP] is there a Qt5 example for SIP?
On 07.07.2013, 13:46:02 br...@stottlemyer.com wrote: On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote: Hi Phil, I am trying to see if SIP will help me with a task I'm trying to solve. I started out by trying the More Complex C++ Example in the docs. However, I'm using Qt5, and the example is for Qt4. I see the pyqtconfig is part of Qt4, but not Qt5. No problem, except pyqtconfig is pretty integrated into the example, and as a beginner, I'm not sure how to take pyqtconfig out. Is there a Qt5 example for SIP? Look at the configure.py for PyQt5. A minimal build system would just be a shell script that invoked sip then the C++ compiler then the linker. The only thing you need to consider is to use the right -t flags to sip and these can be found by introspecting current versions of PyQt. Phil Thanks for the pointers. I've got the example working. But now I'm having trouble extending the example. I've got a bunch of enums I need to make available, some of which have overlapping names. I've been handling this by putting them in different namespaces. But sip is complaining about that. I saw an old mailing list question on the topic (http://www.riverbankcomputing.com/pipermail/pyqt/2007-August/016847.html), but no solution was posted. My .h file is: // Define the interface to the hello library. #include qlabel.h #include qwidget.h #include qstring.h #if defined HELLO_DLL # define HELLO_DLLSPEC Q_DECL_EXPORT #else # define HELLO_DLLSPEC Q_DECL_IMPORT #endif namespace MyNamespace { enum MyEnum { No=0, Yes=1}; }; class HELLO_DLLSPEC Hello : public QLabel { // This is needed by the Qt Meta-Object Compiler. Q_OBJECT public: Hello(QWidget *parent = 0); private: // Prevent instances from being copied. Hello(const Hello ); Hello operator=(const Hello ); }; #if !defined(Q_OS_WIN) void setDefault(const QString def); #endif My .sip file is: // Define the SIP wrapper to the hello library. %Module hello %Import QtGui/QtGuimod.sip %Import QtWidgets/QtWidgetsmod.sip %If (Qt_5_0_0 -) namespace MyNamespace { %TypeHeaderCode #include hello.h %End enum MyEnum { No=0, Yes=1}; }; class Hello : public QLabel { %TypeHeaderCode #include hello.h %End public: Hello(QWidget *parent /TransferThis/ = 0); private: Hello(const Hello ); }; %If (!WS_WIN) void setDefault(const QString def); %End %End The compiler (linker, actually) is complaining about missing symbols: Creating library release\hello.lib and object release\hello.exp siphellocmodule.obj : error LNK2001: unresolved external symbol struct _pyqt4ClassTypeDef sipTypeDef_hello_MyNamespace (?sipTypeDef_hello_MyNamespace@@3U_pyqt4ClassTypeDef@@A) release\hello.dll : fatal error LNK1120: 1 unresolved externals What's the proper way to describe this to sip? Hi, Are you really compiling and linking all C++ files generated by SIP? Best Regards, Mathias Born ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Re: [PyQt] [SIP] is there a Qt5 example for SIP?
... Hi, Are you really compiling and linking all C++ files generated by SIP? D'oh! No I wasn't. Thanks for pointing me in the right direction (and ending the trail of random stuff I was trying). ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
[PyQt] [SIP] is there a Qt5 example for SIP?
Hi Phil, I am trying to see if SIP will help me with a task I'm trying to solve. I started out by trying the More Complex C++ Example in the docs. However, I'm using Qt5, and the example is for Qt4. I see the pyqtconfig is part of Qt4, but not Qt5. No problem, except pyqtconfig is pretty integrated into the example, and as a beginner, I'm not sure how to take pyqtconfig out. Is there a Qt5 example for SIP? Thanks! Brett ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt
Re: [PyQt] [SIP] is there a Qt5 example for SIP?
On Sat, 6 Jul 2013 07:30:43 -0700, br...@stottlemyer.com wrote: Hi Phil, I am trying to see if SIP will help me with a task I'm trying to solve. I started out by trying the More Complex C++ Example in the docs. However, I'm using Qt5, and the example is for Qt4. I see the pyqtconfig is part of Qt4, but not Qt5. No problem, except pyqtconfig is pretty integrated into the example, and as a beginner, I'm not sure how to take pyqtconfig out. Is there a Qt5 example for SIP? Look at the configure.py for PyQt5. A minimal build system would just be a shell script that invoked sip then the C++ compiler then the linker. The only thing you need to consider is to use the right -t flags to sip and these can be found by introspecting current versions of PyQt. Phil ___ PyQt mailing listPyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt