Qt入门基础

news2024/11/24 11:35:42

目录

一 学习Qt的动机

二 创建第一个Qt程序

关于main.cpp

QApplication

Widget

 关于对象树

关于Widget常用的API

 

return a.exec()


 

 

一 学习Qt的动机

  我在学习了C++之后,想做图形化界面。实现前后端的交互。这时候就可以利用Qt进行编程。

二 创建第一个Qt程序

Qt文件是这样组织的(以Widget为例)

 

关于main.cpp

我们从这个程序出发,根据出现的内容来进行拓展式的讲解

 

QApplication

a是QApplication的一个对象,叫做应用程序对象。他有且仅有一个。传入的是命令行参数。

有什么用?通过解析命令行参数,来设置程序内部状态。说的通俗一点就是设置一些初始值。我们即使不写任何代码,程序也会自动有一个框框弹出,并且已经被默认设置好了一些参数。这个就是传递的命令行参数做到的。即使什么都不做都会弹出这个窗口。 

QApplication从底层窗口系统接收事件。(之后会讲到绑定再做解释)也就是说这个窗口是在最底层的,我们之后添加的一些空间对话框什么的都是在这个上层,可以理解成QApplication是一块画布,我们之后添加的东西就相当于在画布上画画。

Widget

w是Widget的一个对象。Widget是继承QObject之后的一个类

Qt中的一个体系结构是这样子的,也叫作对象树。对象树就是描述了Qt中继承关系的一个结构图。最顶层是QObject。

 关于对象树

Qt的一个优势是简化了内存回收机制,C++中对象被new出来就要去析构对象,如果没有进行析构的话,就可能出现内存泄漏的问题。但是Qt之所以会简化内存回收机制和这个对象树的关系很密切。

当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。

怎么理解这样的一句话?

QWidget是继承自QObject的,实现的时候有对应的构造函数和析构函数。构造的时候,是从基类往下构造的。也就是说先构造QObject再构造QWidget。析构的时候是从下往上析构的。当我们关闭窗口的时候,析构掉了最上层的对象,因此继承了最上层对象的对象自然而然也就被析构掉了。

就好比我们平时打开一个网页,如果把网页关闭了的话,基于网页存在的按钮啊,文本啊什么的就全部都不存在了。

关于Widget常用的API

Widget模块可以定义一些最基本的类,可以实现比如对窗口进行的一些操作:设定窗口大小啊,设定窗口标题啊;还可以添加一些小部件,比如按钮,也可以对按钮进行一些基本的操作。

在介绍这个功能之前,我们先来了解一下Qt中窗体的一个规定:

以最左上角为坐标原点,向下y依次增加,向右x依次增加

1 对窗体的操作

①设定窗口大小

 

这样我就得到了一个400×400大小的窗口了 。但是这个窗口是可以被拖动的。如果我们想设置固定的大小,就要使用setFixedSize了。当然,也可以只对x或者y进行设置,非常的灵活。

②设置窗口的标题

这样在最左上角就出现了对应文本的提示

②对按钮的操作

创建按钮

 要调用show方法才可以,要不然就看不到对应的按钮了。

但是我们发现,直接创建出来的按钮和窗体是分离的。因此,我们必须要进行绑定操作,将按钮绑定到窗口上。

 这里有两种绑定方式

按钮移动:move,参数传入对应移动的方向和距离。

设置文字:setText。

按钮如果直接创建的话,默认是在(0,0)位置创建,因此不做移动的话,后面的按钮会覆盖前面的按钮,我们需要移动一下。

 

return a.exec()

return a.exec() 让应用程序对象进入消息循环机制中,代码阻塞到当前行。说人话就是我们可以一直看到对应的窗口和上面的东西,除非我们手动退出。如果是C++中的return 0的话,窗体就一闪而过,什么都没有了

 

 

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

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

相关文章

【RocketMQ】消息的存储

Broker对消息的处理 BrokerController初始化的过程中,调用registerProcessor方法注册了处理器,在注册处理器的代码中可以看到创建了处理消息发送的处理器对象SendMessageProcessor,然后将其注册到远程服务中: public class Brok…

哨声吹响,与世界杯相关的欺诈也在激增

2022 年世界杯已经开始,通过虚假流媒体网站与彩票针对足球迷的诈骗激增。近日,Zscaler 发现与世界杯相关的新注册域名有所增加,尽管并非都是恶意的,也是值得警惕的。 流量趋势 随着世界杯的开赛,从 11 月 21 日流媒体…

Python set集合全部操作方法

文章目录一. 介绍1. 创建set集合2. 判断元素是否在集合内3. 集合推导式(Set comprehension)二. 集合基本操作1. add()添加单个元素2. update()添加列表,元组,字典等整体数据3. remove ( ) 移除元素&#xf…

PACS三维影像后处理系统源码 PACS源码

PACS源码 PACS3D影像后处理系统源码 一、系统概述: ​基于VC MSSQL开发的一套三甲医院医学影像PACS系统源码,集成3D影像后处理功能,包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析等…

mysql数据库之视图

视图(view)是一种虚拟的存在,视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲,视图之保存了查询的sql逻辑,不保存查询结…

【C语言】函数指针和指针函数

文章目录[TOC](文章目录)前言概述函数指针定义:使用:回调函数指针函数前言 今天学一下函数指针 提示:以下是本篇文章正文内容,下面案例可供参考 概述 函数指针:是一个指向函数的指针,在内存空间中存放的…

关于小程序内存在违规内容的处理警告

遇到了问题,就记录一下解决过程吧 小程序涉及提供在线观看视频服务,请补充文娱-视频广场类目; 我们的小程序做了一个类似抖音上下滑动观看视频的页面,被警告了,查看了文档, https://developers.weixin.qq.…

C语言程序-计算闰年平年

#include <stdio.h> int main() { int year ,month,day,i1; printf("欢迎使用本程序&#xff0c;使用愉快\n") ; while(i<10){ printf("请输入您需要计算的年\n"); scanf("%d",&year); printf("…

安全高效 | AIRIOT智慧工地管理解决方案

建筑工地施工材料、机械设备、工程车、人员各个环节管理相对复杂、建筑业也是安全事故频发的高危行业&#xff0c;安全管控尤为重要。建筑施工单位想要保障安全生产&#xff0c;做好能源消耗管控降低生产成本&#xff0c;需要解决掉很多现状问题&#xff1a;1、工地施工作业人员…

【Leetcode 剑指Offer】第 11 天 双指针(简单)

双指针剑指 Offer 18. 删除链表的节点剑指 Offer 18. 删除链表的节点 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二…

服务器(centos7.6)已经安装了宝塔面板,想在里面安装一个SVN工具(subversion),应该如何操作呢?

首先&#xff0c;在登录进入宝塔面板&#xff0c;然后点击左侧终端&#xff0c;进入终端界面&#xff0c;如下图&#xff1a;------------------------------------------如果是第一次使用会弹出输入服务器用户名和密码&#xff0c;此时输入root账号和密码&#xff0c;即可进入…

2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等

文档抽取任务Label Studio使用指南 1.基于Label studio的训练数据标注指南&#xff1a;信息抽取&#xff08;实体关系抽取&#xff09;、文本分类等 2.基于Label studio的训练数据标注指南&#xff1a;&#xff08;智能文档&#xff09;文档抽取任务、PDF、表格、图片抽取标注等…

Python3-集合

Python3 集合 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 可以使用大括号 { } 或者 set() 函数创建集合&#xff0c;注意&#xff1a;创建一个空集合必须用 set() 而不是 { }&#xff0c;因为 { } 是用来创建一个空字典。 创建格式&#xff1a; parame …

奇淫技巧:熟练使用Fetch一个干翻PostMan的顶级技巧

一&#xff1a;如何使用fetch重新发送一个接口请求&#xff1f; 按照如下的请求进行复制 fetch("https://bip-test.yyuap.com/mdf-node/uniform/user/checkAuthByCode?terminalType1&serviceCodeorderList&codeuserdef_filterItem,userdef_schemaSetting"…

《C++ Primer》第十章 泛型算法

《C Primer》第十章 泛型算法 10.1 概述 大多数算法定义在头文件algorithm中&#xff0c;还有一些算法在numeric中。例如标准库算法find: int val 42;//即将查找的值 //如果在vec中找到想要的元素&#xff0c;则返回结果指向它&#xff0c;否则返回vec.cend() auto result …

小样本学习--学习记录

之前在做课题的时候&#xff0c;把数据不均衡和小样本的概念混淆了&#xff0c;昨天看了一篇论文&#xff1a;《 面向小样本数据的机器学习方法研究综述 &#xff08;陈良臣&#xff0c;傅德印&#xff09;》 &#xff0c;这篇论文写的非常清晰。推荐阅读。 网上的一些综述整理…

2月VR大数据:硬件份额变化不大,PS VR2首发游戏超50款

Hello大家好&#xff0c;每月一期的VR内容/硬件大数据统计又和大家见面了。 想了解VR软硬件行情么&#xff1f;关注这里就对了。我们会统计Steam平台的用户及内容等数据&#xff0c;每月初准时为你推送&#xff0c;不要错过喔&#xff01;本数据报告包含&#xff1a;Steam VR硬…

擅长捉弄的内存马同学:Valve内存马

前言 内存马的文章已经很久没有更新过了&#xff0c; 这篇文章不太适合想直接学习利用Valve内存马的师傅 &#xff0c;因为我这篇文章可能会有大篇笔墨去说Tomcat容器&#xff0c;至于原因就是我想更深入的了解一些Tomcat&#xff0c;而Valve内存马属于已经被师傅们玩烂了的一…

现场设备发生故障,如何第一时间通知相关人员?

一、前言 虹科物联网HMI作为一站式物联网解决方案&#xff0c;致力于解决用户在数据采集和可视化、远程监控、边缘计算、软PLC、数据存储&#xff08;SQL数据库和CSV文件&#xff09;、数据上云&#xff08;OPC UA、MQTT&#xff09;等方面的需求&#xff0c;帮助企业快速实现…

运营数据分析模型—用户画像

用户画像 伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。相比传统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析用户行为习惯、消费习惯等重要商业信息,提供了足…