[PyQt] SIP with PyQt5 and "A More Complex C++ Example"

Phil Thompson phil at riverbankcomputing.com
Sat Mar 23 12:29:05 GMT 2019


The example is missing...

%ModuleCode
#include <hello.h>
%End

Thanks,
Phil

> On 23 Mar 2019, at 12:09 pm, bitmap kid <bitmap.kid at gmail.com> wrote:
> 
> Oh obviously !
> 
> hello.h ================================================
> #ifndef HELLO_H
> #define HELLO_H
> #include <QLabel>
> #include <QWidget>
> #include <QString>
> 
> class 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
> #endif // HELLO_H
> 
> hello.cpp ================================================
> #include "hello.h"
> 
> Hello::Hello(QWidget *parent): QLabel(parent) {}
> Hello::Hello(const Hello &other) { (void) other; }
> Hello &Hello::operator=(const Hello &other) { (void) other; return *this; }
> 
> #if !defined(Q_OS_WIN)
> void setDefault(const QString &def) { (void) def; }
> #endif
> 
> hello.sip ================================================
> // Define the SIP wrapper to the hello library.
> 
> %Module hello
> 
> %Import QtGui/QtGuimod.sip
> %Import QtWidgets/QtWidgetsmod.sip
> 
> %If (Qt_5_0_0 -)
> 
> 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
> 
> 
> 
> 
> 
> Le sam. 23 mars 2019 à 13:05, Phil Thompson <phil at riverbankcomputing.com> a écrit :
> On 23 Mar 2019, at 11:46 am, bitmap kid <bitmap.kid at gmail.com> wrote:
> > 
> > Bonjour,
> > 
> > I'm trying to make the example "A More Complex C++ Example" given in the documentation. But I'm having trouble with the setDefault function.
> > 
> > Once the sources generated with the sip command, when I compile, the compiler says:
> > 
> > ./siphellocmodule.cpp:438:13: error: "setDefault" was not declared in this scope.
> >               setDefault (* a0);
> > 
> > Indeed, the siphellocmodule.cpp file refers to the setDefault function but does not include hello.h
> > 
> > Do you have an idea of where the problem is?
> > 
> > Please, note :
> > I am using PyQt5 5.12.1 and SIP 4.19.5.
> > My project consists of hello.h, hello.cpp and hello.sip files
> > My sip command is "sip -t WS_X11 -I /usr/share/sip/PyQt5 -c.hello.sip"
> > It generates the following files:
> > 
> >     sipAPIhello.h
> >     siphelloHello.cpp
> >     siphellocmodule.cpp
> > 
> > And commenting the setDefault function build the project correctly.
> 
> Difficult to say without seeing your hello.h, hello.cpp and hello.sip.
> 
> Phil



More information about the PyQt mailing list