目录
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来完成