Qt---项目代码解析

news2024/10/25 4:17:44

文章目录

  • 一、main.cpp代码解析
  • 二、widget.h代码解析
  • 三、widget.cpp代码解析
    • (一) form file
  • 四、.pro Qt项目的工程文件


一、main.cpp代码解析

main函数的形参就是命令行参数。qt是C++Definitely图形界面化编程,要想编写一个qt的图形界面程序,一定要有QApplication对象。

Widget则是在创建项目的时候填写的生成的类名。

.show()方法让控件显示出来。.hide()方法让空间隐藏。Widget的父类是QWidget,show和hide两个方法都是由QWidget提供的。a.exec()方法表示让程序执行起来。之前在Linux中,也学过六个函数(exec*)exec家族,用于进程程序替换,把可执行文件中的代码和数据,替换到当前进程中。

Qt中的exec和Linux中的exec没有任何关系。只是名字恰好一样的。

二、widget.h代码解析

ifndef用来保证头文件只被包含一次。也可以使用 #pragma once

用于定义一个Qt的命名文件和声明一个名为 Widget 的类。QT_BEGIN_NAMESPACE 这是一个命名空间开始标记。在这个命苦空间中,创建了一个Ui的子命名空间。在Ui的命名空间中,声明了一个Widget的类,但是并没有提供类的具体定义。QT_END_NAMESPACE是命名空间结束标记。

Widget是我们创建项目的时候,所命名的类,继承QWidge。这个父类是Qt SDK内置的。要想使用这个类,就需要包含对应的头文件。 #include <QWidget>。在qt中使用内置的类,包含的头文件的名字就是和类名一致的。当然也可能存在间接包含。后续写代码的原则就是,一个qt的类,先用,如果直接能用,说明对应的头文件已经间接被包含过了,无需显示的在包含一遍,如果这个类找不到,包含对应头文件即可。

Qt中引入了对象树机制,后面会介绍。创建Qt的对象就可以把这个对象给挂到对象树上,往树上挂的时候就需要指定父节点。


Q_OBJECT是一个Qt内置的宏,宏本质上是文本替换。Q_OBJECT展开之后,就会生成一大堆代码。Qt中有一个非常核心的机制,信号和槽。如果某个类想使用 信号和槽 就需要引入Q_OBJECT这个宏


这个东西跟是密切相关的。用来做ui。

可以用拖拽的方式,实现对界面的操作。

三、widget.cpp代码解析

这个文件中的代码并不复杂,

创建项目生成的头文件。

form file 被 qmake 生成的头文件

把 form file生成的界面和当前的widget关联起来。把new的对象给释放了。


(一) form file

再双击widget.ui之后,会进入到一个图形化的界面编辑器。

左边的Layouts,Spacers等都是一些控件,拖拽到右侧的界面上可以创建出控件。

在右下角可以编辑你拖拽的控件,修改控件的属性(字体大小,颜色)等。

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>

这个界面编辑器的源码是xml格式。跟html挺类似的,都是使用成对的标签来表示数据。

四、.pro Qt项目的工程文件

表示我们当前引入的模块,后面会引入一些其他的模块。

表示当前项目中,参与构建的文件都有什么(编译器要编译哪些文件)这个地方不需要手动修改,Qt Creator 帮咱们自动维护好。


上面看到的头文件,cpp文件等都是源代码,如果编译运行qt项目,会生成一些其他的文件。

运行代码之后,生成了一个build……的文件夹。

这些都是自动生成的文件。

编译Qt程序,还是会用到Makefile文件,这个文件是qmake自动生成的。


在debug文件夹中,存在一个.exe文件,这个文件就是在项目运行之后生成的,双击.exe文件,就可以运行项目了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1497703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“python -m experiments.cifar10_test“是什么意思

具体解释如下&#xff1a; "python" 是运行 Python 解释器的命令。"-m" 是一个选项&#xff0c;用于指定要运行的模块。"experiments.cifar10_test" 是要运行的 Python 模块的名称。 其中 虽说main.py文件在上一级目录中&#xff0c;仍然可以在…

浮点数和定点数

前言 大家好我是jiantaoyab&#xff0c;这是我所总结作为学习的笔记第七篇,在这里分享给大家,还有一些书籍《深入理解计算机系统》《计算机组成&#xff1a;结构化方法》《计算机体系结构&#xff1a;量化研究方法》&#xff0c;今天我们来了解定点数和浮点数 定点数 BCD编码 …

《汇编语言》第3版 (王爽)第10章检测点解析

第10章 检测点 检测点10.1&#xff1a;补全程序&#xff0c;实现从内存1000:0000处开始执行指令。 解析: 我们知道retf指令是用栈中的数据&#xff0c;同时修改CS和IP寄存器中的内容&#xff0c;实现远转移&#xff0c;而且是先出栈的数据放入IP中&#xff0c;后出栈的数据放入…

如何快速写一篇民间故事并生成视频?

大家平台在刷抖音的时候&#xff0c;可能会看到一些民间故事的视频&#xff0c;播放量一般都很高&#xff0c;凭借其独特魅力&#xff0c;许多创作者在几个月内迅速吸引了超过十万粉丝&#xff0c;实现了数万元的收益&#xff01;想要加入这个风潮吗&#xff1f;这类视频如何制…

hadoop伪集群部署教程

文章目录 前言一、安装准备1. 安装条件2. 安装jdk3. 配置本节点免密登录 二、安装hadoop1. 下载并解压hadoop2. 设置环境变量2.1 设置hadoop安装目录环境变量2.2. 设置hadoop的root用户环境变量 3. 修改配置文件3.1 修改 etc/hadoop/hadoop-env.sh 文件3.2 修改 etc/hadoop/cor…

一个比较全面实用的C#帮助类、工具类库

前言 经常会有一些同学会问为什么感觉我身边的大佬写一个功能会这么快&#xff1f;一个类似的模块大佬可能半天就搞定了&#xff0c;而我要搞一两天。其实工作久了你会发现很多常用公共的帮助类和工具类&#xff0c;如常见的Excel数据导入导出、文件操作、字符串操作、数据转换…

OpenStack之Nova

一 、Nova 使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务 &#xff08;IaaS&#xff09;系统的主要部分。 主要模块在Python中实现&#xff1a; 1因为认证&#xff0c;与OpenStack 身份认证keystone 交互。 2因为磁盘和服务器镜像&#xf…

Hello C++ (c++是什么/c++怎么学/c++推荐书籍)

引言 其实C基础语法基本上已经学完&#xff0c;早就想开始写C的博客了&#xff0c;却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的&#xff0c;后来考虑了一下还是算了&#xff0c;等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…

C++的类和对象(四):拷贝构造函数

目录 拷贝构造函数 特性 自定义类型的传值传参和传引用传参对比 赋值运算符重载 拷贝构造函数 基本概念&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用&#xff08;一般常用const修饰&#xff09;&#xff0c;在创建一个已存在对象一模一样的新对象时…

每日OJ题_牛客_井字棋

目录 牛客_井字棋 解析代码 牛客_井字棋 井字棋__牛客网 解析代码 class Board {public:bool checkWon(vector<vector<int> > board) {// 当前玩家是否胜出&#xff01;&#xff01;&#xff01;不是有玩家胜出int row board.size(), col board[0].size();fo…

基于similarities的文本语义相似度计算和文本匹配搜索

similarities 实现了多种相似度计算、匹配搜索算法&#xff0c;支持文本、图像&#xff0c;python3开发。 安装 pip3 install torch # conda install pytorch pip3 install -U similarities或 git clone https://github.com/shibing624/similarities.git cd similarities py…

基于R语言lavaan的SEM在复杂统计建模中的科研技术新突破

此外&#xff0c;我们还将深入探讨R语言的基础知识、结构方程模型的基本原理、lavaan程序包的使用方法等内容。无论是潜变量分析、复合变量分析&#xff0c;还是非线性/非正态/缺失数据处理、分类变量分析、分组数据处理等复杂问题&#xff0c;我们都将一一为您解析。 希望通过…

数据结构与算法-线性查找

引言 在计算机科学领域&#xff0c;数据结构和算法是构建高效软件系统的核心要素。今天我们将聚焦于最基础且广泛应用的一种查找算法——线性查找&#xff0c;并探讨其原理、实现步骤以及实际应用场景。 一、什么是线性查找&#xff1f; 线性查找&#xff08;Linear Search&am…

ChaosBlade故障注入工具--cpu,内存,磁盘占用\IO,网络注入等

前言&#xff1a; 本文介绍一款开源的故障注入工具chaosblade&#xff0c;该工具原本由阿里研发&#xff0c;现已开源&#xff1b;工具特点&#xff1a;功能强大&#xff0c;使用简单。 该工具故障注入包含&#xff1a;cpu&#xff0c;内存&#xff0c;磁盘io&#xff0c;磁盘…

2024.3.7 FreeRTOS 作业

思维导图 练习题 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 //打开定时器3的通道3&#xff0c;并且设置为PWM功能HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1…

牛客网 华为机试 坐标移动

本题是需要将输入的字符串&#xff0c;得到移动位置的信息&#xff0c;同时要判断移动信息的合法性。 所以我们可以考虑先通过正则表达式过滤得到正确的字符串。 正确的字符串应该以ADWS其中一个字母开头&#xff0c;然后后面接着1个或者2个&#xff08;0-9&#xff09;的数字。…

灵根孕育源流出,心性修持大道生

解法&#xff1a; 手动本地跑了一下1e9&#xff0c;显然超时。 然后预处理发现开不了这么大的数组。 肯定有规律&#xff0c;打表看看 代码如下 #include<iostream> #include<vector> #include<algorithm> #include<cmath> using namespace std; #…

NetSuite Mass Update 批量更新功能

NetSuite中有一个小而精的便捷功能&#xff0c;但是也是一个很容易在实践中被大家遗忘的隐藏功能&#xff0c;就是Mass Update批量更新&#xff0c;在此想和各位分享一下&#xff5e;该功能主要是可以帮助用户快速将符合固定标准的记录中的单个/多个字段直接进行批量更新。如果…

016集——n等分cad多段线、弧、圆等——vba实现

cad命令行输入“div”选择图元后可n等分图元&#xff0c;若图中有大量图元需要n等分&#xff0c;这时可借助vba一键实现。 代码逻辑框架为&#xff1a;通过创建句柄函数来选择实体&#xff0c;通过sendcommand函数向命令行输入命令。 先来个小程序练练手&#xff1a;在屏幕上指…

leetcode 热题 100_滑动窗口最大值

题解一&#xff1a; 双端队列&#xff1a;滑动窗口的本质是在窗口末尾添加一个元素&#xff0c;并移除头部的一个元素。对于添加的元素&#xff0c;直接和当前最大值比较即可&#xff0c;但对于移除的元素&#xff0c;如果移除的是原先的最大值&#xff0c;则需要重新遍历窗口寻…