当前位置: 首页 > news >正文

2. Qt界面文件原理

本节主要介绍ui文件如何与窗口关联,并通过隐式连接方式显示对话框

本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频]

1 UI文件如何与窗口关联

1.1 mainwindow.cpp的头文件ui_mainwindow.h

根据编译原理的基本规则,项目中的每个源文件必须包含其依赖的所有头文件声明才能成功编译。在创建的带有ui界面的项目文件中,mainwindow.cpp自动包含了名为ui_mainwindow.h的头文件,该文件是由uic.exe将ui文件转换而来的,最终在编译目录中生成ui_mainwindow.h,如下图。
在这里插入图片描述

在这里插入图片描述
总结一下即在Qt框架中,当创建带有UI界面的项目时,Qt的qmake或CMake构建系统会自动进行下面流程:

  • 检测项目中的.ui文件
  • 调用uic.exe生成对应头文件(例如:mainwindow.ui → ui_mainwindow.h)
  • 将生成的头文件目录加入编译器的头文件搜索路径

1.2 关联方式

设计UI: 开发者使用Qt Designer设计UI,并保存为 .ui 文件。
生成代码: 在项目构建过程中,uic 工具被调用,将 .ui 文件转换为 ui_ObjectName.h 文件。这个转换过程是自动化的,开发者不需要手动执行。
关联UI和窗口: 在C++代码中,通过包含 ui_ObjectName.h 文件,可以访问 Ui_ObjectName 类。在窗口类的构造函数中,调用 setupUi 方法将UI元素与窗口关联起来,从而实现UI的显示和交互。

在这里插入图片描述

1.3 控件转到槽实现信号与槽连接的原理

  • ui_mainwindow.h文件中包含connectSlotsByName()函数的调用,该函数是转到槽功能实现信号与槽连接的关键
    在这里插入图片描述
  • connectSlotsByName() 函数功能:
    在这里插入图片描述
  • Qt中信号与槽的连接方式有显示连接和隐式连接两种,转到槽的这种方式属于隐式连接
    在这里插入图片描述

2 通过隐式连接制作对话框实例

2.1 创建隐式连接

  • 添加一个按钮pushButton_3,并通过“转到槽”方式建立clicked信号和槽函数on_pushButton_3_clicked() 的连接
    在这里插入图片描述
    在这里插入图片描述

2.2 添加并显示界面

  • 点击新建文件,选择Qt-Qt 设计师界面类,添加一个对话框到本项目HelloWorld.pro
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 在mainwindow.h中引入刚刚创建的对话框的头文件dialog.h,并添加该界面类的成员函数pDlg
    在这里插入图片描述
  • 在mainwindow.cpp中初始化对话框,并在pushButton_3关联的槽函数中完成对话框显示功能:用到函数exec()。函数功能及运行结果如下
    在这里插入图片描述
    在这里插入图片描述
http://www.dtcms.com/a/117647.html

相关文章:

  • Java面向对象编程详解
  • VUE中的CompositionAPI绑定
  • leetcode274.H指数
  • Java 知识点汇总(三)
  • Android Compose 中获取和使用 Context 的完整指南
  • 数字人分身源码搭建:支持OEM
  • 浅谈「分词」:原理 + 方案对比 + 最佳实践
  • c语言常见类型的范围到底是啥?
  • Ubertool 的详细介绍、安装指南及使用说明
  • 垃圾回收——三色标记法(golang使用)
  • python Socket编程
  • 典型的ETL使用场景与数据集成平台的应用
  • 2025-04-07 NO.3 Quest3 MR 配置
  • IDEA中Spring Boot项目接入MySQL数据库:从配置到CRUD实战
  • 密码学基础——分组密码的运行模式
  • 说话人分离中的聚类方法:深入解析Agglomerative聚类、KMeans聚类和Oracle聚类
  • vue3工程中使用vditor完成markdown渲染并防止xss攻击
  • 网络相关题目
  • 996引擎-疑难杂症:Ctrl + F9 编辑好的UI进入游戏查看却是歪的
  • Git vs SVN 核心区别
  • 《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第一篇:开发环境准备
  • DeepSeek底层揭秘——《推理时Scaling方法》内容理解
  • notepad++日常使用(每行开头、每行末尾增加字符串,每行中间去掉字符串)
  • 接口自动化测试总结
  • EN 60601-1-2(医疗电气设备电磁兼容性要求)及相关EMC标准的全面解读
  • 13_Hugging Face 核心组件介绍
  • Docker 数据挂载教程
  • SQL语言的物联网数据分析
  • 多语言电商系统:外贸货源共享系统的本土化实践
  • java后端对时间进行格式处理