You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:01:11