[Interest] using designer plugin in application
Graham Labdon
Graham.Labdon at avalonsciences.com
Tue Dec 3 12:50:42 CET 2013
Hi
I have the answer for making this work with Visual Studio
In Widget.dll I have MyLabel.h and MyLabel.cpp
In this project I set the pre-processor directive QDESIGNER_EXPORT_WIDGETS
MyLabel is declared as
class QDESIGNER_WIDGET_EXPORT MyLabel : public QLabel
...
In the plugin project I add MyLabel.cpp and MyLabel.h as existing items and build
Thanks for your input
From: Harish Surana [mailto:surana4u at gmail.com]
Sent: 03 December 2013 11:42
To: Graham Labdon
Cc: interest at qt-project.org
Subject: Re: [Interest] using designer plugin in application
I would say first try to run this example http://qt-project.org/doc/qt-4.8/designer-customwidgetplugin.html and then compare with your implementation.
On Tue, Dec 3, 2013 at 12:24 PM, Graham Labdon <Graham.Labdon at avalonsciences.com<mailto:Graham.Labdon at avalonsciences.com>> wrote:
So I added the export and includes QDesignerExportWidget to my class and now it wont compile -
Moc'ing MyLabel.h...
1> moc_MyLabel.cpp
1>Build\moc\moc_MyLabel.cpp(55): warning C4273: 'MyLabel::qt_static_metacall' : inconsistent dll linkage
1> c:\sandbox\testplugin\widgets\build\moc\../../MyLabel.h(10) : see previous definition of 'qt_static_metacall'
1>Build\moc\moc_MyLabel.cpp(62): warning C4273: 'staticMetaObject' : inconsistent dll linkage
1> c:\sandbox\testplugin\widgets\build\moc\../../MyLabel.h(10) : see previous definition of 'public: static QMetaObject const MyLabel::staticMetaObject'
1>Build\moc\moc_MyLabel.cpp(62): error C2491: 'MyLabel::staticMetaObject' : definition of dllimport static data member not allowed
1>Build\
.................
I have no idea why
From: Harish Surana [mailto:surana4u at gmail.com<mailto:surana4u at gmail.com>]
Sent: 03 December 2013 11:13
To: Graham Labdon
Cc: interest at qt-project.org<mailto:interest at qt-project.org>
Subject: Re: [Interest] using designer plugin in application
If you look for QDESIGNER_WIDGET_EXPORT in the documentation. You will get:
QDESIGNER_WIDGET_EXPORT
This macro is used when defining custom widgets to ensure that they are correctly exported from plugins for use with Qt Designer.
On some platforms, the symbols required by Qt Designer to create new widgets are removed from plugins by the build system, making them unusable. Using this macro ensures that the symbols are retained on those platforms, and has no side effects on other platforms.
For example, the World Time Clock Plugin example exports a custom widget class with the following declaration:
class QDESIGNER_WIDGET_EXPORT WorldTimeClock : public QWidget
{
Q_OBJECT
...
};
On Tue, Dec 3, 2013 at 12:00 PM, Graham Labdon <Graham.Labdon at avalonsciences.com<mailto:Graham.Labdon at avalonsciences.com>> wrote:
Hi
I have read this but cannot get it to work (I am using Qt5.1.1 with Visual Studio
I have a library called Widgets.dll that contains 1 class declared as
#include <QLabel>
#include "widgets_global.h"
class WIDGETS_EXPORT MyLabel : public QLabel
{
Q_OBJECT
public:
MyLabel(QWidget *parent);
~MyLabel();
private:
};
I have set up my plugin project so that it can see the header file for MyLabel and can see the Widgets.lib
The plugin project builds without error but is not visible in Designer
Can anyone see the reason for this?
Thanks
From: Harish Surana [mailto:surana4u at gmail.com<mailto:surana4u at gmail.com>]
Sent: 03 December 2013 10:20
To: Graham Labdon
Cc: interest at qt-project.org<mailto:interest at qt-project.org>
Subject: Re: [Interest] using designer plugin in application
Yes it is technically possible to make the widgets accessible to Qt Designer without linking widgets dll against QtDesigner4.dll. Some possible approaches are described here: http://qt-project.org/doc/qt-4.8/designer-creating-custom-widgets.html (see the section "Splitting up the Plugin").
On Tue, Dec 3, 2013 at 10:31 AM, Graham Labdon <Graham.Labdon at avalonsciences.com<mailto:Graham.Labdon at avalonsciences.com>> wrote:
Hi
I have developed a number of Qt Designer plugins and can use them in my applications.
But obviously I need my apps to link against the plugin library which means when I deploy the application I need to deploy the plugin library as well.
What I would like is for widget classes to be compiled into one library that both the application and the designer plugin can use but I have been unable to achieve this.
Is this possible?
_______________________________________________
Interest mailing list
Interest at qt-project.org<mailto:Interest at qt-project.org>
http://lists.qt-project.org/mailman/listinfo/interest
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20131203/f65174ed/attachment.html>
More information about the Interest
mailing list