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

【Qt】项目代码

main.cpp文件

  • argc:命令行参数个数。
  • *argv[ ]:每一个命令行参数的内容。
  • main的形参就是命令行参数。
  • QApplication a(argc, argv)

编写一个Qt的图形化界面程序,一定需要QApplication对象。

  • widget w;

在创建项目的时候,勾选widget,创建了一个widget的类。

  • w.show();

创建一个控件对象,并显示出来。(.show()方法让控件显示出来,.hide()方法让控件隐藏,这俩种方法都是widget的父类Qwidget所提供的)。

  • exec()表示让程序执行起来。

当前Qt中的exec和Linux中的exec没有任何关系,只是名字相同,这样的设定在计算机中是比较常见的,同一种术语,在不同的场景,表示的含义不一样,需要结合上下文来理解。

widget.h文件

  • ifndef WIDGET_H
  • define WIDGET_H

header guard:保证头文件只被包含一次,更推荐写成#pragma once

  • class widget;声明一个类
  • public Qwidget;创建项目时,选择的父类

这里的父类是Qt SDK内置的,要想使用这个类,需要包含对应的头文件#include<Qwidget.h>。

        Qt的设定就是使用Qt内置的类,包含的头文件的名字就是和类名一致的,当然,并不是用到的所有的Qt的类都需要显示包含头文件。在C++中,头文件可能是“间接包含的”,就比如:引入了a.h,在a.h中又包含了b.h文件,此时,就相当于把a.h和b.h都包含了。

【注意】在后续写Qt代码的原则是,一个Qt的类,先进行使用,如果可以直接使用,说明对应的头文件已经被间接包含过了,无需显式包含,而如果这个类提示找不到定义,则需要手动的显式的把对应的头文件给包含。

  •  Q_OBJECT

Q_OBJECT是一个Qt内置的宏,宏和本质就是文本替换,而Q_OBJECT展开之后会生成一大堆的代码。

在Qt中有一个非常核心的机制,“信号和槽”,如果某个类向使用“信号和槽”就需要引入Q_OBJECT这个宏。

  • QWidge *parent = nullptr;

在Qt中引入了“对象树”机制。此时,如果创建一个Qt对象,就可以将这个对象挂到对象树上,然后往树上挂的时候需要值得“父节点”。这于数据结构中的“树”类似,一个节点,可以有N个节点,一个节点只能有一个父节点,此处对象树就是一个普通的N叉树(非二叉树)。

  • Ui::Widget *ui;和form file密切相关。

 widget.cpp文件

  • widget.h 创建项目生成的头文件
  • ui_widget.h form file 被qmake生成的头文件

  • 把form file生成的界面和当前widget关联起来。

widget.ui文件

当直接双击ui文件的时候,Qt Creator会调用Qt Designer,打开ui文件,此时就会打开图形化的界面编辑器。

  • 中间这部分是生成的程序窗口
  • 左边部分是Qt中内置的控件,拖拽左侧的控件到程序窗口可以创建具体的界面。
  • 右边部分是编辑属性,每一个控件都有很多的属性,就影响到控件具体的行为。

点击左侧编辑按钮,里面显式的就是.ui文件的本体内容。

这个格式称为xml格式,xml和html非常类似,都是使用成对的标签来表示数据。

html虽然也是通过标签来表示的,但是html的标签都是固定的,每一个标签的含义有一个专门的标准委员会约定,所有的浏览器也是按照同样的规则来解释的。

xml这里的标签,有哪些接口,都表示什么含义,这些都是可以自定义的。此处看到的这些标签,就是开发Qt的程序员来定义的。这里的标签含义具体是什么内容不需要关注,只要知道ui文件本质上是一个xml格式即可。

此处约定的xml标签的含义与Linux网络原理中的自定义应用层协议类似。

在Qt中使用xml文件就是描述程序的界面是什么样子的,然后qmake会调用相关的工具,依据这个xml文件生成一些C++代码。从而把完整的界面构造出来。

.pro文件

 这是Qt项目的工程文件,也是qmake工具构建时候的重要依据。

  •  要引入的Qt的模板,后续可能会被修改。

  • 按照C++11的标准进行编译

  • 描述了当前项目中,参与构建的文件都有哪些(编译器需要编译哪些文件),这个地方不需要手动修改,Qt creator会自动维护。

.pro文件类似于Linux中的make file文件。

Qt creator将过程中编译的细节都封装好,不需要过多的关注,只需要点击运行按钮,就可以直接编译通过。

总结

上述讲到的.h、.cpp、.pro、.ui文件都是源代码,如果编译运行Qt项目,构建过程还会生成一些中间文件。

打开文件资源管理器,看看项目对应的目录,在运行一次程序之后,就会在项目目录并列的地方,多出来一个“build_xxx”目录,这个目录里面就是该项目运行过程中,生成的一些临时文件。

makefile:编译Qt程序,还是会用到makefile,只不过这个makefile,不需要手动写,而是qmake自动生成的。

ui_widget.h就是widget.ui xml生成的.h文件。

相关文章:

【Qt】项目代码

main.cpp文件 argc&#xff1a;命令行参数个数。*argv[ ]&#xff1a;每一个命令行参数的内容。main的形参就是命令行参数。QApplication a(argc, argv) 编写一个Qt的图形化界面程序&#xff0c;一定需要QApplication对象。 widget w; 在创建项目的时候&#xff0c;勾选widg…...

MySQL中常用工具

MySQL自带的系统数据库 常用工具 MySQL mysqladmin mysqlbinlog mysqldump mysqlimport/source mysqlimport只能导入文本文件&#xff0c;不能导入sql文件...

关于儿童编程语言

青少年通常会通过Scratch或Python开始学习编程。在这两种语言中&#xff0c;代码的编写&#xff08;或者在Scratch中是构建&#xff09;方式类似于英语&#xff0c;这使得初学者更容易学习。Scratch的一个重要卖点是对视觉和运动感知学习者非常友好。这些代码块按颜色编码&…...

[io]进程间通信 -信号函数 —信号处理过程

sighandler_t signal(int signum, sighandler_t handler); 功能&#xff1a; 信号处理函数 参数&#xff1a; signum&#xff1a;要处理的信号 handler&#xff1a;信号处理方式 SIG_IGN&#xff1a;忽略信号 SIG_DFL&#xff1a;执行默认操作 handler&#xff1a;捕捉信 …...

RoboDK的插件

目录 collision-free-planner&#xff1a; opc-ua&#xff1a; collision-free-planner&#xff1a; RoboDK 的无碰撞规划器插件使用概率路线图 (PRM) 自动在机器人工作空间内创建无碰撞路径。 有关无碰撞规划器的更多信息&#xff0c;请访问我们的 文档。 生成参数无碰撞…...

List<HashMap<String, Object>>排序

如果列表中的元素类型是List<HashMap<String, Object>>&#xff0c;排序时需要考虑到value可能是任意类型的对象。在这种情况下&#xff0c;你可以针对具体的类型进行比较&#xff0c;或者使用Comparable接口来确保对象可以被正确比较。 示例代码 假设我们想要根据…...

【大数据】探索大数据基础知识:定义、特征与生态系统

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...

营销材料翻译质量对销售渠道的影响

在当今的全球市场中&#xff0c;与不同受众进行有效沟通的能力对于企业的成功至关重要。营销材料的高质量翻译在通过销售渠道塑造客户旅程方面发挥着重要作用&#xff0c;影响着知名度、参与度、转化率和保留率。方法如下&#xff1a; 提高品牌知名度 在销售渠道的顶端&#x…...

centos7.9安装k8s 1.3

centos7.9安装k8s 1.3 k8s环境规划&#xff1a;初始化修改网卡配置两台服务器都执行 配置阿里yum源 安装containerd服务安装初始化k8s需要的软件包kubeadm初始化k8s集群 扩容k8s集群-添加第一个工作节点安装kubernetes网络组件-Calico测试在k8s创建pod是否可以正常访问网络和co…...

【第七节】python多线程及网络编程

目录 一、python多线程 1.1 多线程的作用 1.2 python中的 threading 模块 1.3 线程锁 二、python网络编程 2.1 通过socket访问网络 2.2 python2.x中的编码问题 2.3 python3的编码问题 一、python多线程 1.1 多线程的作用 多线程技术在计算机编程中扮演着重要的角色&a…...

Linux Shell编程--变量

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 变量&#xff1a; bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能 预定义变量、环境变量、自定义变量、位置变量 一、自定义变…...

软文写作必须掌握的技巧有哪些?

现代互联网飞速发展的时代&#xff0c;硬广逐渐变的效果越来越差&#xff0c;而软文推广已经成为网络营销的重要组成部分了&#xff0c;一篇好的软文往往能为你的产品、网站带来意想不到的效果。 用于做营销的软文&#xff0c;我们不能像写普通文章那样随意。一篇优质的软文会让…...

探索灵办AI:智能办公的好帮手

引言 随着AI工具的增多&#xff0c;选择合适的AI助手变得尤为重要。ChatGPT的订阅费用高且功能单一&#xff0c;很多小伙伴开始寻找更具性价比和多功能的替代品。灵办AI以其便捷、高效、多功能的特点&#xff0c;成为许多朋友的新宠。 灵办AI助手是一款多功能的全能AI助手&am…...

gin-vue-admin框架遇到AxiosError:Network Error怎么解决?

flipped-aurora/gin-vue-admin: &#x1f680;ViteVue3Gin的开发基础平台&#xff0c;支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下载、代码生成器【可AI辅助】、表单生成器和可配置的导入导出等开发必备功能…...

作业zzz

【考查点】 考查SpringBoot相关的知识点&#xff0c;包括&#xff1a;依赖注入&#xff08;DI&#xff09;、面向切面编程&#xff08;AOP&#xff09;&#xff0c;以及常用的SpringBoot组件。 【作业要求】 利用spring-boot-starter-web来搭建一个web服务。完成简单的用户管…...

python 空list如何表示

创建空列表&#xff1a; L List() 或者&#xff1a; L [] 这时L就是一个空列表。 需要注意的是&#xff0c;空列表不是None&#xff0c;因此 L [] If L is not None:# 这里的代码总是会被执行 检查列表是否为空要使用len()&#xff1a; L [] if len(L):# 这里的代码不会执…...

C++ const、constexpr与consteval作用与区别

C const、constexpr与consteval作用与区别 在C 常量表达式和编译时优化中&#xff0c;我们已经提到了常量、编译时常量与运行时常量的概念。为了加深理解&#xff0c;我们再重新明晰一下这三者的概念。 常量&#xff1a;初始化之后便不可修改的量。在c中使用const修饰的“变量”…...

solidity 数学和密码学函数

数学和密码学函数为开发者提供了一系列强大的工具&#xff0c;用于执行各种数学运算和加密操作 addmod(uint x, uint y, uint k) returns (uint) 计算 (x y) % k&#xff0c;加法会在任意精度下执行&#xff0c;并且加法的结果即使超过 2**256 也不会被截取。 从 0.5.0 版本…...

opencv-图像透视变换

透射变换是视角变化的结果&#xff0c;是指利用透视中心&#xff0c;像点&#xff0c;目标点共线的条件&#xff0c;按透视旋转定律使承影面(透视面)绕迹线(透视轴旋转某一角度&#xff0c;破坏原有的投影光束&#xff0c;仍能保持承影面上投影几何图形不变的变化) 它的本质将图…...

C++ 域

C 域 :: ​ C中域有函数局部域&#xff0c;全局域&#xff0c;命名空间域&#xff0c;类域&#xff1b;域影响的是编译时语法查找一个变量/函数/类型出处&#xff08;声明或定义&#xff09;的逻辑&#xff0c;所以有了域隔离&#xff0c;名字冲突就解决了。局部域和全局域除了…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...