Qt中的UIC

      Qt中的UIC(User Interface Compiler, 用户界面编译器):读取由Qt Widgets Designer生成的XML格式(.ui)文件并创建相应的C++头文件或Python源文件。如将mainwindow.ui文件生成ui_mainwindow.h。

      uic.exe位置在6.8.0\msvc2019_64\bin ,其支持的输入参数如下所示:

      mainwindow.ui文件内容示例如下:在vs2022中此文件可以直接使用Qt Creator打开

      生成ui_mainwindow.h文件内容示例如下:

      Qt Widgets Designer UI文件:以XML格式表示表单的部件树(represent the widget tree of the form in XML format)。表单可以进行以下处理:

      在编译时,表单被转换为可以编译的C++代码。

      在运行时,表单由QUiLoader类处理,该类在解析XML文件的同时动态构建部件树。

      编译时表单处理

      你可以使用Qt Widgets Designer创建用户界面组件,并在构建应用程序时使用Qt集成的构建工具qmake和uic为这些组件生成代码。生成的代码包含表单的用户界面对象。它是一个C++结构体,包含

      (1).指向表单的部件、布局、布局项、按钮组(form's widgets, layouts, layout items, button groups, and actions)的指针。

      (2).一个名为setupUi()的成员函数,用于在父部件上构建部件树。

      (3).一个名为retranslateUi()的成员函数,用于处理表单字符串属性的翻译。

      生成的代码可以包含在你的应用程序中并直接使用。或者,你可以使用它来扩展标准部件的子类。

      你可以在应用程序中使用编译时处理的表单,方法如下:

      (1).直接方法:构建一个部件作为组件的占位符,并在其中设置用户界面。

      (2).单继承方法:继承表单基类(例如QWidget或QDialog),并包含表单用户界面对象的私有实例。

      (3).多继承方法:继承表单基类和表单用户界面对象。这样,表单中定义的部件就可以在子类的范围内直接使用。

      运行时表单处理:可以通过使用QtUiTools模块来实现,该模块提供了QUiLoader类来处理使用Qt Widgets Designer创建的表单。

      自动连接:编译时或运行时表单定义的信号和槽连接可以手动或自动设置,使用QMetaObject在信号和适当命名的槽之间建立连接的功能。

      注:以上整理的内容主要来自于Qt官方文档

      GitHubhttps://github.com/fengbingchun/Qt_Test

### 如何在 Visual Studio 中配置 Qt UIC #### 配置环境变量 为了使 Visual Studio 能够识别并调用 Qt 的 `uic` 工具,在系统的环境变量中添加 Qt 安装路径下的 bin 文件夹是非常重要的[^1]。 #### 创建项目时集成 Qt 支持 当创建新的 C++ 项目时,通过安装好的 **Qt VS Tools** 插件来初始化带有 Qt 功能支持的新工程。这一步骤会自动处理许多必要的设置工作,包括关联 `.ui` 文件到对应的 UI 编译器工具链上[^2]。 #### 设置自定义构建规则 对于已经存在的项目或者需要手动调整的情况,则需进入项目的属性页面,找到“Qt Project Settings”,确认选择了合适的 Qt 版本,并勾选启用 MOC 和 UIC 处理选项。这样可以确保每次编译过程中都会运行 uic 来转换 .ui 文件为相应的 C++ 源代码文件。 #### 修改项目文件(.vcxproj) 如果上述方法未能生效,还可以尝试编辑项目的 vcxproj 文件,加入如下 XML 结构以显式指定 uic 命令行参数: ```xml <ItemDefinitionGroup> <ClCompile> <!-- Other settings --> </ClCompile> <QtMoc> <AdditionalOptions>/fo "%(RelativeDir)%%(Filename).moc"</AdditionalOptions> </QtMoc> <QtRcc/> <QtUic> <Arguments>-tr tr -indent 4</Arguments> </QtUic> </ItemDefinitionGroup> ``` 这段配置指定了 uic 执行的具体行为,比如翻译函数名 (`-tr`) 及缩进级别(`-indent`)。 #### 确认字符集编码一致性 为了避免可能出现的中文乱码问题,在所有涉及字符串操作的地方建议统一采用 UTF-8 字符集。可以在源文件顶部增加预处理器指令 `#pragma execution_character_set("utf-8")` 来强制执行此设定[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值