[PyQt] SIP PyQT compilation issue
Phil Thompson
phil at riverbankcomputing.com
Fri Apr 8 13:49:04 BST 2011
On Tue, 5 Apr 2011 15:50:39 -0700, emmanuel_mayssat at lynceantech.com wrote:
>> I assume that in C++ UserMessage is a sub-class of QObject, but you
have
>> lied to SIP about this. If so, then you need to tell SIP that
UserMessage
>> has a private copy ctor (which it normally infers from the QObject
>> definition).
>>
>> Phil
>
> I looked at qobject.sip
> [...]
> private:
> QObject(const QObject &);
> };
>
So there is no need to add the private UserMessage copy ctor.
> $cat UserMessage.sip
>
> class UserMessage : QObject
> {
>
> %TypeHeaderCode
> #include <UserMessage.h>
> %End
>
> public:
> UserMessage();
> ~UserMessage();
>
> void setup( QObject* statusMessageConsumer, // Setup
> the signal / slot connections required to present messages to the
user
> QObject* warningMessageConsumer,
> QObject* errorMessageConsumer );
>
> void setup( QObject* generalMessageConsumer ); // Setup
> the signal / slot connections required to present messages to the
user
>
> void sendStatusMessage( QString message ); // Send
a
> status message to the user
> void sendStatusMessage( QString message, QString source ); // Send
a
> status message to the user including a string identifying the source
of
> the message
>
> void sendWarningMessage( QString message ); // Send
a
> warning message to the user
> void sendWarningMessage( QString message, QString source ); // Send
a
> warning message to the user including a string identifying the
source
> of the message
>
> void sendErrorMessage( QString message ); // Send
an
> error message to the user
> void sendErrorMessage( QString message, QString source ); // Send
an
> error message to the user including a string identifying the source
of
> the message
>
> signals:
> void statusMessage( QString message ); //
Signal
> a status message
> void warningMessage( QString message ); //
Signal
> a warning message
> void errorMessage( QString message ); //
Signal
> an error message
>
> void generalMessage( QString message ); //
Signal
> a message (emitted for status, warning, and error
>
> private:
> // copy constructor entry added as per previous email
> UserMessage(const UserMessage &);
> };
>
> BUT STILL
>
> g++ -c -pipe -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2
> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W
> -D_REENTRANT -DNDEBUG
> -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_LIB -I.
>
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//widgets/include
>
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include
>
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//api/include
>
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//plugins/include
> -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/python2.6
> -I/usr/lib64/qt4/mkspecs/default -I/usr/include -I/usr/X11R6/include -o
> sipCaFrameworkQCaWidget.o sipCaFrameworkQCaWidget.cpp
> In file included from
>
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaObject.h:46,
> from
>
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:36,
> from QCaWidget.sip:4:
> /usr/include/QtCore/qobject.h: In copy constructor
> 'UserMessage::UserMessage(const UserMessage&)':
> /usr/include/QtCore/qobject.h:309: error: 'QObject::QObject(const
> QObject&)' is private
>
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/UserMessage.h:38:
> error: within this context
> In file included from QCaWidget.sip:4:
>
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:
> In copy constructor 'QCaWidget::QCaWidget(const QCaWidget&)':
>
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:43:
> note: synthesized method 'UserMessage::UserMessage(const
> UserMessage&)' first required here
> [...]
>
> Any help is appreciated,
It looks like you are looking for the problem in the wrong place -
QCaWidget seems to have the copy ctor problem.
Phil
More information about the PyQt
mailing list