Несмотря на то, что у меня есть похожие вопросы, размещенные на stackoverflow, ни одно из их решений на самом деле не отвечает на мою проблему. У меня есть 2 независимых виджета, которые я хотел бы объединить (вставить один виджет в другой как дочерний): один представляет собой пользовательский интерфейс, созданный только с помощью Qt Creator (перетаскивание), а другой - анимацию, выполненную в Qt с помощью OpenGL. Я пытаюсь добавить анимацию в пользовательский интерфейс, и вот код:
glwidget.h (анимация):
<code>
class GLWidget : public QGLWidget
{
public:
GLWidget(QWidget *parent);
~GLWidget();
void initializeGL();
void resizeGL(int w, int h);
void paintGL();
void drawCube(int i, GLfloat z, GLfloat ri, GLfloat jmp, GLfloat amp);
QGLFramebufferObject *fbo;
};
и glwidget.cpp:
<code>
GLWidget::GLWidget(QWidget *parent)
: QGLWidget(QGLFormat(QGL::SampleBuffers), parent)
{
makeCurrent();
fbo = new QGLFramebufferObject(512, 512);
timerId = startTimer(20);
}
GLWidget::~GLWidget()
{
glDeleteLists(pbufferList, 1);
delete fbo;
}
void GLWidget::initializeGL()
{....
Что касается пользовательского интерфейса, у меня есть файл заголовка:
<code>
class ClaraTeCourseSimulator : public QMainWindow
{
Q_OBJECT
public:
explicit ClaraTeCourseSimulator(QWidget *parent = 0);
~ClaraTeCourseSimulator();
private:
Ui::ClaraTeCourseSimulator *ui;
GLWidget *defaultAnim;
protected:
void setupActions();
protected slots:
void addAnimWidget();
};
и файл .cpp:
<code>
ClaraTeCourseSimulator::ClaraTeCourseSimulator(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ClaraTeCourseSimulator)
{
ui->setupUi(this);
defaultAnim = new GLWidget(ui->centralWidget);
}
void ClaraTeCourseSimulator::setupActions()
{
connect(ui->actionCar_Modelling, SIGNAL(triggered(bool)), ui->centralWidget,
SLOT(addAnimWidget()));
}
void ClaraTeCourseSimulator::addAnimWidget()
{
ui->centralWidget->layout()->addWidget(defaultAnim);
}
ClaraTeCourseSimulator::~ClaraTeCourseSimulator()
{
delete ui;
}
Но когда я пытаюсь запустить его, я получаю около 24 таких ошибок: неопределенная ссылка на ` imp _ZN9QGLFormatD1Ev все указывает на конструктор и деструктор в glwidget.cpp.
Что я делаю не так? Как я могу решить эту проблему?