gpt4 book ai didi

c++ - 将子部件添加到 Qt 中的另一个部件

转载 作者:行者123 更新时间:2023-11-28 03:49:18 26 4
gpt4 key购买 nike

尽管在 stackoverflow 上发布了与我类似的问题,但他们的解决方案都没有真正响应我的问题。我有 2 个独立的小部件,我想组合它们(将一个小部件作为 child 插入另一个小部件):一个是仅使用 Qt Creator(拖放)创建的 UI,另一个是在 Qt 中完成的动画OpenGL。我正在尝试在 UI 中添加动画,代码如下:

glwidget.h(动画):


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:

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()
{....
至于用户界面,我有头文件:

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 文件:

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 个这样的错误:undefined reference to `imp_ZN9QGLFormatD1Ev 全部指向 glwidget.cpp 中的构造函数和析构函数。

我做错了什么?我该如何解决这个问题?

最佳答案

您是否正在尝试将中央小部件更改为 GL 小部件?因为为 GL 小部件指定父级不会更改它们。如果您想将一个小部件更改为另一个(使用设计器),我建议使用“提升为”功能,您可以使用它在设计器中更改小部件的实际类。因此,在 UI 上添加一个 QWidget,然后将其提升到您的类 (GLWidget)。

问题似乎出在 GLWidget 构造函数中的 GLFormat 构造函数调用上。

关于c++ - 将子部件添加到 Qt 中的另一个部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com