Extend Qlable Widget and add it to the QDesigner Widgetlist
-
It's the header file of your widget from the plugin
-
[quote author="M001" date="1375882194"]I thougt this information is all built in the .dll file?[/quote]
It is but only the implementation. To use it you need the header file just for the compiler to know which interface to use. The linker then looks for the implementation either in your binary or like in your case in the plugin (dependency). -
okay i include the headerfile and get many errors:
...ui_widget.h:56: Fehler:undefined reference to `_imp___ZN11AnalogClockC1EP7QWidget'...moc_analogclock.cpp:70:
...moc_analogclock.cpp:70: Fehler:undefined reference to `_imp___ZN11AnalogClock16staticMetaObjectE'
...moc_analogclock.cpp:65: Fehler:undefined reference to `_imp___ZN11AnalogClock16staticMetaObjectE'
-
a little bit more information:
the first error is caused by here:
file: ui_widget.h
@
....
class Ui_Widget
{
public:
AnalogClock *analogClock;void setupUi(QWidget *Widget) { if (Widget->objectName().isEmpty()) Widget->setObjectName(QStringLiteral("Widget")); Widget->resize(400, 300); analogClock = new AnalogClock(Widget); //this line produces the error analogClock->setObjectName(QStringLiteral("analogClock")); analogClock->setGeometry(QRect(60, 60, 199, 151)); retranslateUi(Widget); QMetaObject::connectSlotsByName(Widget); } // setupUi void retranslateUi(QWidget *Widget) { Widget->setWindowTitle(QApplication::translate("Widget", "Widget", 0));
#ifndef QT_NO_TOOLTIP
analogClock->setToolTip(QApplication::translate("Widget", "The current time", 0));
#endif // QT_NO_TOOLTIP
#ifndef QT_NO_WHATSTHIS
analogClock->setWhatsThis(QApplication::translate("Widget", "The analog clock widget displays the current time.", 0));
#endif // QT_NO_WHATSTHIS
} // retranslateUi};
....
@second error:
file: moc_analogclock.cpp
@
....
const QMetaObject *AnalogClock::metaObject() const
{
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
}
....@third
file: --moc_analogclock.cpp@...
const QMetaObject AnalogClock::staticMetaObject = {
{ &QWidget::staticMetaObject, qt_meta_stringdata_AnalogClock.data,
qt_meta_data_AnalogClock, qt_static_metacall, 0, 0}
};--
....
@ -
if I add analogclock.h and analogclock.cpp files the code compiles and I could use my plugin. but i thougt the analogclock.cpp should be inside the .dll file. Why do I have to add the analogclock.cpp file?
-
did you progress any further on this topic i am stuck at the same spot as you were then please help if you found a solution
-
how this stuffs work:
-
custom plugin dll in i.e. ..\qtcreator-2.8.0\bin\plugins\designer\ is loaded by the QtCreator and it needs no header file or other information
the plugin's interface provides an includeFile() by which the designer knows what header has to include in ui header file generated for your project
-
what follows is just an exemplification:
-
copy customwidgetplugin.dll and customwidgetplugin.lib to i.e ...\Qt\4.8.5\plugins\designer\
-
add the header file of your custom widget i.e. analogclock.h in your application dir in order to be found at compilation from ui header file
-in pro file add the export library file .lib,
i.e.
LIBS += $$(QTDIR)\plugins\designer\customwidgetplugin.lib
I have tested and works
Cheers!
-
-
but mine is still not working i have added the library but whenever i run after adding the library the application starts and terminates unexpectedly without showing any error
-
hehe ... you mix debug and release app and plugin dll, or conversely
try to compile both for release or debug
-
i have only used release files do i need to use debug files as well somewhere