如何在Visual Studio中为Qt 6.4项目添加新.ui文件?
在Visual Studio 2022 + Qt 6.4中添加新.ui文件并访问控件的正确方法
直接#include .ui文件会报错,因为.ui是XML格式的描述文件,C编译器无法解析,必须通过Qt的uic工具生成对应的C头文件后才能使用。以下是完整的实现步骤:
1. 正确将new_window.ui添加到项目并生成头文件
- 将你在Qt Designer中保存的
new_window.ui复制到项目根目录(和mainwindow.ui同目录)。 - 在Visual Studio的解决方案资源管理器中,右键项目 → 添加 → 现有项,选中
new_window.ui完成添加。 - 右键
new_window.ui→ 属性,检查自定义工具是否设置为Qt UIC:- 如果不是,手动选择
Qt UIC后点击确定。
- 如果不是,手动选择
- 右键
new_window.ui→ 运行自定义工具,触发uic生成对应的头文件ui_new_window.h(该文件会自动出现在项目的Generated Files目录下)。
2. 在MainWindow中访问new_window的控件
步骤1:包含生成的头文件
在mainwindow.h中添加对生成头文件的引用:
#pragma once #include <QMainWindow> #include "ui_mainwindow.h" #include "ui_new_window.h" // 引入new_window对应的自动生成头文件
步骤2:声明窗口和UI成员
按你允许new_window的UI为公有需求,在MainWindow类中声明对应成员:
class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); // 声明为公有,允许外部访问 Ui::NewWindow new_window_ui; QMainWindow* new_window; // 对应new_window的窗口实例 private: Ui::MainWindow ui; };
步骤3:初始化并访问控件
在mainwindow.cpp中完成UI初始化,之后即可直接操作控件:
#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); // 初始化new_window的窗口和UI new_window = new QMainWindow(this); new_window_ui.setupUi(new_window); // 直接访问new_window的控件,例如修改按钮文本 new_window_ui.pushButton->setText("新窗口按钮"); // 可选:显示新窗口 new_window->show(); } MainWindow::~MainWindow() { delete new_window; }
关键说明
Ui::NewWindow是uic自动生成的类,里面包含了你在Qt Designer中添加的所有控件指针,命名与Designer中设置的一致。- 必须通过
setupUi方法将UI类与对应窗口实例绑定,否则控件指针为空,无法操作。 - 若不需要单独弹出新窗口,也可将
new_window_ui绑定到MainWindow本身,但这会覆盖原有mainwindow.ui的布局,不推荐此用法。
内容的提问来源于stack exchange,提问作者Cesar
相关产品推荐
相关产品推荐

