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

devtools/2024/11/27 8:51:35/

目录

ui%E6%96%87%E4%BB%B6%EF%BC%9A-toc" style="margin-left:0px;">步骤一:创建.ui文件:

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

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

ui-toc" style="margin-left:40px;"> 2.在实现文件中初始化ui

ui%E7%A9%BA%E9%97%B4%EF%BC%88%E6%AF%94%E5%A6%82%E8%AE%BE%E7%BD%AE%E4%BF%A1%E5%8F%B7%E6%A7%BD%EF%BC%89-toc" style="margin-left:40px;">3.连接ui空间(比如设置信号槽)

步骤三:更新.pro文件

总结:


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

ui%E6%96%87%E4%BB%B6%EF%BC%9A">步骤一:创建.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 类中:

// test.h#ifndef TEST_H
#define TEST_H#include <QWidget>
#include "ui_test.h"  // 引入自动生成的 UI 头文件class test : public QWidget
{Q_OBJECTpublic:explicit test(QWidget *parent = nullptr);~test();private:Ui::test *ui;  // 声明 Ui::test 指针,指向 UI 对象
};#endif // TEST_H

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

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

// 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 对象,避免内存泄漏
}

ui%E7%A9%BA%E9%97%B4%EF%BC%88%E6%AF%94%E5%A6%82%E8%AE%BE%E7%BD%AE%E4%BF%A1%E5%8F%B7%E6%A7%BD%EF%BC%89">3.连接ui空间(比如设置信号槽)

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

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

// test.cpptest::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文件中声明槽函数

// test.hprivate 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 文件被包含。

http://www.ppmy.cn/devtools/137350.html

相关文章

IMX 平台UART驱动情景分析:read篇--从硬件驱动到行规程的全链路剖析

往期内容 本专栏往期内容&#xff1a;Uart子系统 UART串口硬件介绍深入理解TTY体系&#xff1a;设备节点与驱动程序框架详解Linux串口应用编程&#xff1a;从UART到GPS模块及字符设备驱动 解UART 子系统&#xff1a;Linux Kernel 4.9.88 中的核心结构体与设计详解IMX 平台UART驱…

Linux(Ubuntu)升级openssh至9.6版本

前言&#xff1a; 修复 Openssh 命令注入漏洞(CVE-2020-15778)、OpenSSH ssh-agent远程代码执行漏洞(CVE-2023-38408)、OpenSSH 安全漏洞(CVE-2021-41617)、OpenSSH 信息泄漏漏洞 (CVE-2023-51385)将Openssh升级至9.6p1即可。 升级 OpenSSH 版本需要谨慎&#xff0c;特别是生…

k8s删除网络组件错误

k8s集群删除calico网络组件重新部署flannel网络组件&#xff0c;再部署pod后出现报错不能分配ip地址 plugin type"calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized 出现该问题是因为删除网络组件后&#xff0c;网…

【CSP CCF记录】201712-2第12次认证 游戏

题目 样例输入1 5 2 样例输出1 3 样例输入2 7 3 样例输出2 4 代码 没有技术含量的一道题 #include<bits/stdc.h> using namespace std; int main() {int n,k;int a[1010]{0}; // 标记小朋友是否被淘汰 cin>>n>>k;int i0,num0,mn; while(m!1){i1; if(a[i]!1…

java:拆箱和装箱,缓存池概念简单介绍

1.基本数据类型及其包装类&#xff1a; 举例子&#xff1a; Integer i 10; //装箱int n i; //拆箱 概念&#xff1a; 装箱就是自动将基本数据类型转换为包装器类型&#xff1b; 拆箱就是自动将包装器类型转换为基本数据类型&#xff1b; public class Main {public s…

JavaWeb——SpringBoot原理

10.1. 配置优先级 10.1.1. 配置文件 properties > yml(推荐) > yaml 10.1.2. Java系统属性、命令行参数 命令行参数 > Java系统属性 > 配置文件 10.2. Bean管理 10.2.1. 手动获取bean ApplicationContext&#xff0c;IOC容器对象 10.2.2. bean作用域 10.2.3.…

FFN层,全称为Feed-Forward Network层;Layer Normalization;Softmax;

目录 FFN层,全称为Feed-Forward Network层 Layer Normalization 操作步骤 归一化和Softmax 归一化解决量纲问题 归一化(Normalization) Softmax FFN层,全称为Feed-Forward Network层 是Transformer架构中的一个关键组件。它本质上是一个简单的多层感知机(MLP),用…

Jmeter中的测试片段和非测试原件

1&#xff09;测试片段 1--测试片段 功能特点 重用性&#xff1a;将常用的测试元素组合成一个测试片段&#xff0c;便于在多个线程组中重用。模块化&#xff1a;提高测试计划的模块化程度&#xff0c;使测试计划更易于管理和维护。灵活性&#xff1a;可以通过模块控制器灵活地…