关于ui的qt c ++神秘不完整的类类型错​​误

时间:2016-06-03 19:32:35

标签: c++ qt

我为多窗口qt项目设置了骨架。它编译ans看起来很好,所以我开始添加所有我的gui元素等。现在,突然间,我的一扇窗户被打破了。特别是,我在标题

中遇到了一些问题
namespace Ui {
class VideoPanel;
} ...

private:

    Ui::VideoPanel *ui;

和cpp文件中的相应部分:

VideoPanel::VideoPanel(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::VideoPanel)

{
    ui->setupUi(this); //

}

我得到的错误是

Error   1   error C2512: 'Ui::VideoPanel' : no appropriate default constructor available    

ui(new Ui::VideoPanel)行。

我已经看到,如果你没有包含所有正确的Qt gui头文件,这可能会发生,所以除了构造函数和析构函数之外,我已经删除了代码中的所有内容。

满h:

#ifndef VIDEOPANEL_H
#define VIDEOPANEL_H

#include <QtWidgets>
#include <QWidget>

namespace Ui {
class VideoPanel;
}

class VideoPanel : public QWidget
{
    Q_OBJECT

public:
    VideoPanel(QWidget *parent = 0);
    ~VideoPanel();

private slots:

private:

    Ui::VideoPanel *ui;

};

#endif // VIDEOPANEL_H

完整的cpp:

#include "videopanel.h"
#include "ui_videopanel.h"

VideoPanel::VideoPanel(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::VideoPanel)

{
    ui->setupUi(this); // 

}

VideoPanel::~VideoPanel()
{

}

1 个答案:

答案 0 :(得分:1)

您更改了班级的名称,但.ui文件的<class>标签中似乎有旧名称。你必须在那里更改名称,以便让UIC生成一个与你的新名字兼容的头文件。

如果您使用Qt Creator,可以在设计器中打开ui文件,并将objectName属性更改为新的类名,您可能需要进行干净的构建之后。 enter image description here