[SOLVED] QT5: Promoting widget inside a promoted form class
-
Hello there!
I have a MainWindow form. I put a widget inside it and promote it to my class 1. But my class 1 has a form that contains a widget promoted to my class 2. When I try to compile, it gave me the following error:
@form1.obj:-1: error: LNK2001: unresolved external symbol "public: __thiscall Form2::Form2(class QWidget *)" (??0Form2@@QAE@PAVQWidget@@@Z)@
What could I do to accomplise this? Is this impossible?
Thanks you for your answers and time.
-
Have you created .h and .cpp files for Form2 class? Are they defined and declared correctly? Linker can't find declaration of constructor function of class Form2. Maybe you have declared your constructor like: Form2() instead of Form2(class QWidget *)?
-
Yes, it's all ok.
form1.h
@#ifndef FORM1_H
#define FORM1_H#include <QWidget>
namespace Ui {
class Form1;
}class Form1 : public QWidget
{
Q_OBJECTpublic:
explicit Form1(QWidget *parent = 0);
~Form1();private:
Ui::Form1 *ui;
};#endif // FORM1_H
@form2.h
@#ifndef FORM2_H
#define FORM2_H#include <QWidget>
namespace Ui {
class Form2;
}class Form2 : public QWidget
{
Q_OBJECTpublic:
explicit Form2(QWidget *parent = 0);
~Form2();private:
Ui::Form2 *ui;
};#endif // FORM2_H
@MainWindows contains a widget. This widget is promoted to Form1, wich contains a widget promoted to Form2.
What should I check now?
-
Which IDE & compiler do you use? I have same construction(promoted widget in promoted widget) and it works in VS(msvc) & QtCreator(gcc). But your linker somhow can't find object file with Form2... Try to include Form2 header in Form1 header to ensure it will be compiled....
-
AcerExtensa, I have VS & QTCreator(vc). I have tried including form2.h in form1.h, but the same result.
Sam, this is the image:
"https://docs.google.com/file/d/0B0QWPtcmBoNIRDBmM1p0QVBPOVU/edit":https://docs.google.com/file/d/0B0QWPtcmBoNIRDBmM1p0QVBPOVU/edit -
-
Here is project with promoted widget in promoted widget of main widget. It works in QtCreator(gcc) and in MSVC: "PromoWidget.tar.gz":http://xplatforms.de/PromoWidget.tar.gz
Test it in your Environment.
-
I'll get crazy with this. Your project works perfect! I have been comparing file by file and all seems exactly the same. But mine keeps giving me this error.
This is my project (ultra basic, just like yours):
"https://docs.google.com/file/d/0B0QWPtcmBoNIdHFxZ1dHSVpTX0U/edit":https://docs.google.com/file/d/0B0QWPtcmBoNIdHFxZ1dHSVpTX0U/editThanks for all your responses and your time!
-
I can compile and run your project without problems whatsoever. Have you tried cleaning your project and rerunning qmake? Sometimes hitting rebuild isn't enough.
-
[quote author="Jufa" date="1359527268"]I don't know what you mean with "clean" [/quote]
Right Click on your Project Tree there is an option in the context Menu "Clean" , which will clear the moc files generated by the compiler in debug and release folder of your project.