Custom Widget Plugin Analog Clock
Hi!
When i create a form and add custom widget example analogclock or any other custom widget on it, make a project with this form and compile it, it says:
fatal error C1083: Cannot open include file: 'analogclock.h'
Where is the problem?
How can i use custom widgets in my application?
I am using Qt 4.1.4 and VS integration 1.1.3.
Thanks.
Re: Custom Widget Plugin Analog Clock
Make sure that %QTDIR%\examples\designer\customwidgetplugin is in your includes path.
Re: Custom Widget Plugin Analog Clock
Thank you for your answer. Now it says:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall AnalogClock::AnalogClock(class QWidget *)" (??0AnalogClock@@QAE@PAVQWidget@@@Z) referenced in function "public: void __thiscall Ui_Dialog::setupUi(class QDialog *)" (?setupUi@Ui_Dialog@@QAEXPAVQDialog@@@Z) main.obj
Error 2 fatal error LNK1120: 1 unresolved externals debug\pp.exe
My code is:
main.cpp
Code:
#include <QApplication>
#include <QDialog>
#include "ui_form.h"
int main(int argc,char *argv[])
{
Ui::Dialog ui;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}
ui_form.h
Code:
#ifndef UI_FORM_H
#define UI_FORM_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include "analogclock.h"
class Ui_Dialog
{
public:
AnalogClock *analogClock;
{
Dialog
->setObjectName
(QString::fromUtf8("Dialog"));
Dialog
->resize
(QSize(400,
300).
expandedTo(Dialog
->minimumSizeHint
()));
analogClock = new AnalogClock(Dialog);
analogClock
->setObjectName
(QString::fromUtf8("analogClock"));
analogClock
->setGeometry
(QRect(170,
140,
100,
100));
retranslateUi(Dialog);
} // setupUi
void retranslateUi
(QDialog *Dialog
) {
analogClock
->setWhatsThis
(QApplication::translate("Dialog",
"The analog clock widget displays the current time.",
0,
QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi
};
namespace Ui {
class Dialog: public Ui_Dialog {};
} // namespace Ui
#endif // UI_FORM_H
Re: Custom Widget Plugin Analog Clock
You didn't link your program with AnalogClock's code.
Re: Custom Widget Plugin Analog Clock
Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall AnalogClock::AnalogClock(class QWidget *)" (__imp_??0AnalogClock@@QAE@PAVQWidget@@@Z) referenced in function "public: void __thiscall Ui_Dialog::setupUi(class QDialog *)" (?setupUi@Ui_Dialog@@QAEXPAVQDialog@@@Z) main.obj
Error 2 error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall AnalogClock::metaObject(void)const " (?metaObject@AnalogClock@@UBEPBUQMetaObject@@XZ) main.obj
Error 3 error LNK2001: unresolved external symbol "public: virtual void * __thiscall AnalogClock::qt_metacast(char const *)" (?qt_metacast@AnalogClock@@UAEPAXPBD@Z) main.obj
Error 4 error LNK2001: unresolved external symbol "public: virtual int __thiscall AnalogClock::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@AnalogClock@@UAEHW4Call@QMetaObject@ @HPAPAX@Z) main.obj
Error 5 error LNK2001: unresolved external symbol "protected: virtual void __thiscall AnalogClock::paintEvent(class QPaintEvent *)" (?paintEvent@AnalogClock@@MAEXPAVQPaintEvent@@@Z) main.obj
my *.pro file
TEMPLATE = app
TARGET +=
DEPENDPATH += .
INCLUDEPATH += C:\Qt\4.1.4\examples\designer\customwidgetplugin
# Input
FORMS += form.ui
SOURCES += main.cpp
Re: Custom Widget Plugin Analog Clock
Try:
Code:
TEMPLATE = app
TARGET +=
DEPENDPATH += .
INCLUDEPATH += C:\Qt\4.1.4\examples\designer\customwidgetplugin
LIBS += -LC:\Qt\4.1.4\plugins\designer\ -lcustomwidgetplugin
# Input
FORMS += form.ui
SOURCES += main.cpp
Re: Custom Widget Plugin Analog Clock
Now it builds fine, but when i run the application it says:
cannot find customwidgetplugin.dll
Re: Custom Widget Plugin Analog Clock
You must copy that DLL to the same directory where your executable is.
Re: Custom Widget Plugin Analog Clock
Thank you very much, now it works fine.