QT报错:error: allocation of incomplete type ‘Ui::‘解决办法

目录

步骤一:创建.ui文件:

步骤二:修改c++类(这里假设类名为test)

[1.在头文件中包含 UI 文件](#1.在头文件中包含 UI 文件)

2.在实现文件中初始化ui

3.连接ui空间(比如设置信号槽)

步骤三:更新.pro文件

总结:


qt使用中,已经添加了类文件,当创建ui文件之后并运行,很容易报错,提示:error: allocation of incomplete type 'Ui::',,具体的排查解决办法如下:

步骤一:创建.ui文件:

  • 在 Qt Creator 中,右键点击你的项目文件夹,然后选择 Add New
  • 选择 Qt Designer Form Class ,然后选择 Widget
  • .ui 文件命名(例如 test.ui),然后选择 Finish
  • 打开 test.ui 文件,在 Qt Designer 中设计你想要的 UI 界面(例如,添加按钮、标签等)。

步骤二:修改c++类(这里假设类名为test)

1.在头文件中包含 UI 文件

打开你的 test.h 头文件,并包含自动生成的 ui_test.h 文件。确保将 Ui::test 类作为成员变量添加到 test 类中:

cpp 复制代码
// test.h

#ifndef TEST_H
#define TEST_H

#include <QWidget>
#include "ui_test.h"  // 引入自动生成的 UI 头文件

class test : public QWidget
{
    Q_OBJECT

public:
    explicit test(QWidget *parent = nullptr);
    ~test();

private:
    Ui::test *ui;  // 声明 Ui::test 指针,指向 UI 对象
};

#endif // TEST_H

2.在实现文件中初始化ui

打开 test.cpp 文件,在构造函数中初始化 ui 指针并调用 setupUi(this) 来加载 UI:

cpp 复制代码
// test.cpp

#include "test.h"
#include "ui_test.h"  // 包含自动生成的 UI 头文件

test::test(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::test)  // 初始化 Ui::test 对象
{
    ui->setupUi(this);  // 设置 UI
}

test::~test()
{
    delete ui;  // 删除 UI 对象,避免内存泄漏
}

3.连接ui空间(比如设置信号槽)

如果需要响应 UI 中的控件(如按钮、文本框等)的信号,可以在 test 类中设置相应的槽函数,并将信号与槽连接。

比如,如果 UI 中有一个按钮 pushButton,可以连接它的点击信号:

cpp 复制代码
// test.cpp

test::test(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::test)
{
    ui->setupUi(this);
    connect(ui->pushButton, &QPushButton::clicked, this, &test::on_pushButton_clicked);
}

void test::on_pushButton_clicked() {
    // 处理按钮点击事件
    qDebug() << "Button clicked!";
}

此时不要忘记在test.h文件中声明槽函数

cpp 复制代码
// test.h

private slots:
    void on_pushButton_clicked();  // 声明槽函数

步骤三:更新.pro文件

可以通过右键->重新构建qmake来完成

总结:

  • 使用 Qt Designer 创建并编辑 test.ui 文件。
  • test.h 文件中包含 ui_test.h,并将 Ui::test 作为成员变量。
  • test.cpp 中,使用 ui->setupUi(this) 来初始化 UI 并关联控件。
  • (可选)在类中连接信号和槽函数,以响应 UI 控件的事件。
  • 更新 .pro 文件,确保 .ui 文件被包含。
相关推荐
dot to one41 分钟前
Qt 中 QWidget涉及的常用核心属性介绍
开发语言·c++·qt
码农新猿类1 小时前
初入OpenCV
qt·opencv·计算机视觉
洛克希德马丁3 小时前
QLineEdit增加点击回显功能
c++·qt·ui
向日葵xyz4 小时前
Qt5与现代OpenGL学习(十一)OpenGL Widget鼠标控制直线旋转
开发语言·qt·学习
小宋加油啊6 小时前
Mac QT水平布局和垂直布局
开发语言·qt·macos
CodeCraft Studio17 小时前
数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
前端·javascript·ui·甘特图
伐尘18 小时前
【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64
windows·qt·visual studio
吃面不喝汤6618 小时前
破解 Qt QProcess 在 Release 模式下的“卡死”之谜
开发语言·qt
charlie1145141911 天前
逐步理解Qt信号与槽机制
数据库·qt
Anesthesia丶1 天前
Vue3 + naive-ui + fastapi使用心得
vue.js·ui·fastapi