Extend Qlable Widget and add it to the QDesigner Widgetlist
-
another step forward :), Thanks SGaist!
I downloaded "Qt 5.1.0 for Windows 32-bit (VS 2012, 511 MB)" compiled the Plugin with this Version and copied the .dll to the "Qt 5.1.0 for Windows 32-bit (MinGW 4.8, OpenGL, 666 MB)" installation Plugin folder and now I could use this Plugin in my "Qt 5.1.0 for Windows 32-bit (MinGW 4.8, OpenGL, 666 MB)" installation. That means i see ist in QTCreator-Designer and could move it on my mainwindow. But when i try to compile my project I get these errors:C:\Users\name\build-TestPlugIns-Desktop_Qt_5_1_0_MinGW_32bit-Debug\ui_mainwindow.h:18: Fehler:analogclock.h: No such file or directory
the headerfile is missing. I thougt this information is all built in the .dll file?
Edit: I am using MS Visual Studio 2012
-
The header is needed to write your code like for any other library
-
sorry for this stupid question, but what should i write into the headerfile?
-
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