【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文件。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql源码编译启动debug

对于没有C语言基础的同学来说&#xff0c;想看看源码&#xff0c;在搞定编辑器做debug的时候就被劝退了&#xff0c;发生点啥了&#xff0c;完全看不懂&#xff0c;不知道从哪里入手去做debug&#xff1b;我为了看看 mysql 的 insert buffer 到底存的是索引页还是数据页&#x…

ViT和SwinTransformer详解

ViT是Google brain发表于ICLR21上的工作&#xff0c;开创性将transformer用在vision领域&#xff0c;且图像识别性能超CNN&#xff0c;至今引用3.8w&#xff1b;原文&#xff1a;https://arxiv.org/pdf/2010.11929 SwinTransformer是微软亚洲研究院发表于ICCV21上&#xff0c;…

双回路校园智能电表是什么?什么叫双回路校园智能电表?

在智慧校园的建设浪潮中&#xff0c;双回路校园智能电表作为一种创新的能源计量与管理解决方案&#xff0c;正逐渐成为校园电力系统改造与升级的关键要素。本文旨在深入探讨双回路校园智能电表的概念、工作原理、核心优势及其在校园能源管理中的应用实践。 一、定义与工作原理…

Harbor 仓库一键安装

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

一文理清生产管理的“4管”和“8理”!

一提到生产管理&#xff0c;很多人的第一反应可能是车间里忙碌的身影、流水线上飞速运转的机器&#xff0c;还有一张张密密麻麻的生产计划表。但实际上&#xff0c;生产管理远不止于此。 “科学管理之父”弗雷德里克温斯洛泰勒认为&#xff1a;管理就是确切地知道你要别人干什…

CompletableFuture详解

CompletableFuture详解 学习链接:https://juejin.cn/post/7124124854747398175?searchId20240806151438B643DF2AAD2FC5E6F11E 一、CompletableFuture简介 在JAVA8开始引入了全新的CompletableFuture类&#xff0c;它是Future接口的一个实现类。也就是在Future接口的基础上&a…

计算机网络复习总结

第一章 计算机网络体系结构 1、计算机网络的概念组成和功能 &#xff08;1&#xff09;什么是计算机网络&#xff1f; 计算机网络是将一个分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。…

UI自动化常见精华面试题整理

selenium的运行原理 1、基于Web端如何做自动化测试&#xff0c;谈谈你的思路和方向&#xff1f; Web端的自动化测试&#xff0c;基本就是模拟手工测试人员来做功能测试。用机器的自动执行代替人的操作。web端呈现的产品有两个方向可以做自动化测试&#xff1a;接口层和界面操作…

虚拟机Windows10系统安装QEMU

文章目录 1. QEMU安装1.1 安装准备1.1.1 安装平台1.1.2 软件下载 1.2 安装QEMU1.2.1 找到下载的QEMU软件&#xff0c;双击开始安装1.2.2 设置语言1.2.3 安装向导&#xff0c;点击 Next1.2.4 点击“I Agree”1.2.5 点击Next1.2.6 设置软件安装位置1.2.7 点击 finish1.2.8 编辑系…

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …

FFmpeg源码:av_reduce函数分析

AVRational结构体和其相关的函数分析&#xff1a; FFmpeg有理数相关的源码&#xff1a;AVRational结构体和其相关的函数分析 FFmpeg源码&#xff1a;av_reduce函数分析 一、av_reduce函数的声明 av_reduce函数声明在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0…

【计算机操作系统】同步与互斥的基本概念

同步与互斥的基本概念 进程同步的概念 知识点回顾&#xff1a;进程具有异步性&#xff0c;异步性是指&#xff0c;各并发执行的进程以各自独立的、不可预知的速度向前推进 并发性带来了异步性&#xff0c;有时需要通过进程同步解决这种异步问题&#xff0c;有的进程之间需要…

JVM的面试考点

JVM内存划分 1.堆,整个内存区域中,内存最大的区域,放的都是new出来的对象,new类名这一部分存放在堆中, 而这个scanner是一个临时变量,这个scanner的地址存放在栈上,scanner里面存放的值是new类名这个对象的首地址 2.栈,分为JVM虚拟机栈(Java代码),和本地方法栈(C),这个栈包含了…

如何提前预防网络威胁

一、引言 随着信息技术的迅猛进步&#xff0c;网络安全议题愈发凸显&#xff0c;成为社会各界不可忽视的重大挑战。近年来&#xff0c;一系列网络安全事件的爆发&#xff0c;如同惊雷般震撼着个人、企业及国家的安全防线&#xff0c;揭示了信息安全保护的紧迫性与复杂性。每一…

2024年第五届“华数杯”全国大学生数学建模竞赛C题-老外游中国(代码+成品论文+讲解)

目录 &#x1f495;一、问题重述&#x1f495; &#x1f438;问题 1&#x1f438; &#x1f438;问题 2&#x1f438; &#x1f438;问题 3&#x1f438; &#x1f438;问题 4&#x1f438; &#x1f438;问题 5&#x1f438; &#x1f495;二、解题思路&#x1f495; …

图解RocketMQ之如何实现顺序消息

大家好&#xff0c;我是苍何。 顺序消息是业务中常用的功能之一&#xff0c;而 RocketMQ 默认发送的事普通无序的消息&#xff0c;那该如何发送顺序消息呢&#xff1f; 要保证消息的顺序&#xff0c;要从生产端到 broker 消息存储&#xff0c;再到消费消息都要保证链路的顺序…

【C++】二维数组 数组名

二维数组名用途 1、查看所占内存空间 2、查看二维数组首地址 针对第一种用途&#xff0c;还可以计算数组有多少行、多少列、多少元素 针对第二种用途&#xff0c;数组元素、行数、列数都是连续的&#xff0c;且相差地址是有规律的 下面是一个实例 #include<iostream&g…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法&#xff0c;然后去获取当前bean适配的advisor&#xff0c;如果还不熟悉的可以去看下之前的博客&#xff0c;接下来我们分析Spring AOP是如何创建代理对象的&#xff0c;在此之前…

【目标检测类】YOLOv5网络模型结构基本原理讲解

1. 基本概念 YOLOv5模型结构主要包括以下组成部分&#xff1a;‌ 输入端&#xff1a;‌YOLOv5的输入端采用了多种技术来增强模型的性能&#xff0c;‌包括Mosaic数据增强、‌自适应锚框计算、‌以及自适应图片缩放。‌这些技术有助于提高模型的泛化能力和适应不同尺寸的输入图…

MySQL基础操作全攻略:增删改查实用指南(中)

本节目标&#xff1a; NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 DEFAULT - 规定没有给列赋值时的默认值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列&#xff08;或两个列多个列的结合&#xff09;有唯一标 识&am…