【Qt】qt基础
目录
一、使用Qt Creator创建qt项目
二、项目文件解析
三、Qt中创建图形化界面的程序的两种方法
四、对象树
一、使用Qt Creator创建qt项目
1.选择项目模板
选中第一类模板Application(Qt应用程序,包含普通窗体程序和QtQuick程序), 然后选中右侧的第一个子模版:Qt Widgets Application(普通窗体模板,基于部件的窗体界面程序)。
2.选择项目路径
注意:qt项目所在的路径不能包含中文!
3.选择构建系统
选中qmake。
qmake:是一个构建工具(build tool),支持跨平台构建,用于自动生成makefile文件。qmake用于编辑后缀为.pro的文件。
cmake:是一个跨平台构建工具,本身不是编译器。
4.选择qt项目中自动生成父类的类型
使用Qt Creator创建qt项目的中会自动生成一些代码,自动生成的代码中就包含一个类,此处就是选择该类的父类(Qt中内置的类)是什么。qt自动生成的父类默认有三种:
QMainWindow:主窗口类,表示一个完整的应用程序窗口。可以包含菜单栏、工具栏、状态栏等。
QWidget:最简单最基本的窗体程序,里面可以有多个控件实现程序功能。
QDialog:表示一个对话框。
上面三种类的关系:
QMainWindow和QDialog都是QWidget的派生类。
注意:Qt中内置的类都是以Q为前缀开头的。
二、项目文件解析
以qt自动生成的默认父类是Qwidget来分析:
后缀为.pro的文件:工程文件。工程新建好后,文件列表中有一个以.pro为后缀的文件,它是qmake自动生成的文件是用来生成makefile文件的。
widget.h:主要是声明Widget类(Widget类继承自QWidget),其中Widget类中的成员变量是命名空间Ui中的类,该类将在ui_widget.h中继承Ui_Widget类。
main.c:用于构造Widget类,并执行其相应的方法。
widget.cpp:用于实现Widget类(实现构造函数、析构函数、其他成员函数)该文件会包含头文件"widget.h"和"ui_widget.h"。注意:在Widget类的构造函数中创建控件对象。
widget.ui:其实是一个xml文件,qt会根据UI设计器中的控件帮我们在该文件中生成相应的内容。
ui_widget.h:该文件中包含类Ui_Widget的声明和定义,当我们通过拖拽控件生成图形界面时,比如拖拽了一个Label控件,然后此时widget,ui文件就会生成相应的Label控件的信息,在编译期间,qt会根据widget.ui中关于Label控件的信息在ui_widget.h中生成关于该Label控件的代码,然后执行生成图形化界面。
三、Qt中创建图形化界面的程序的两种方法
这里创建一个简单的Label控件。
1.直接使用C++代码的方式创建界面。
Qt中一些容器的头文件基本都被内置,当我们使用QString,QVector等时不必包含其头文件。
2.使用图形化方式。通过form file(也就是使用Qt Designer拖拽控件的方式或直接在Qt Creator中修改.ui文件来生成图形界面)。
.ui文件其实是一个xml格式文件,qmake在编译期间根据这个xml文件会在ui_widget.h文件中生成生成一些C++代码,从而构造出完整的图形界面。
四、对象树
上面我们在堆上new了一个Label类但是没有释放空间,会造成内存泄露吗?答案是不会的。
在Qt中的对象树会把我们在堆上new的各个控件组织起来,目的是为了把这些控件对象的生命周期由对象树统一管理,统一释放这些控件。
如果在栈上创建控件对象那么就会导致对象提前销毁,当main.c中要执行w.show(),此时w的构造函数执行完毕,在栈上创建的控件对象已析构销毁,无法显示该Label控件内容。
注意:new对象的时候一定要将this指针传入到创建的控件对象中。
相关文章:
【Qt】qt基础
目录 一、使用Qt Creator创建qt项目 二、项目文件解析 三、Qt中创建图形化界面的程序的两种方法 四、对象树 一、使用Qt Creator创建qt项目 1.选择项目模板 选中第一类模板Application(Qt应用程序,包含普通窗体程序和QtQuick程序), 然后选中右侧的第…...
VLC还是SmartPlayer?Windows平台RTSP播放器低延迟探讨
技术背景 好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨: 播…...
极验决策引擎如何凭借独特优势,弯道超车传统风控?
前言 市场上的规则决策引擎产品众多,但大多局限于IP、设备、账号等层面,提供的是现成的风控标签和规则。然而,真正的风控,需要的不仅仅是标签和规则。 极验的业务规则决策引擎与众不同,这款决策引擎以界面流程编排为…...
Spring Boot集成Knife4j文档工具
Knife4j 搭建 Knife4j环境的的搭建和Swagger一样都比较简单,只需要极简的配置即可。 maven依赖 我使用的是较高版本的基于openapi规范的依赖包,OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本,底层依赖框架为Springfox。 此次在4…...
html|本地实现浏览器m3u8播放器,告别网络视频卡顿
前言 网络上经常是以m3u8文件传输视频流的 ,但是有时网络慢往往导致视频播放卡顿。于是我在想能不能先下载然后再播放呢?于是尝试下载然后实现本地播放m3u8视频。 正文 1.找到网络视频流的m3u8连接 一般在浏览器按F12就可以看到有请求视频流的连接。 …...
vue3监听横向滚动条的位置;鼠标滚轮滑动控制滚动条滚动;监听滚动条到顶端
1.横向取值scrollLeft 竖向取值scrollTop 2.可以监听到最左最右侧 3.鼠标滚轮滑动控制滚动条滚动 效果 <template><div><div class"scrollable" ref"scrollableRef"><!-- 内容 --><div style"width: 2000px; height: 100…...
JSON
文章目录 一、概念1.json官网2.json的概念3.序列化方案:xml、json 二、json的数据类型1.json的键:必须是带双引号的字符串2.json的值:6种数据类型(1)对象 { }(2)数组 [ ] 三、Python中的json1.序列化:Python对象 转 json2.反序列化…...
前端常用的方法
时间处理 moment时间处理函数 // 时间日期相关常用的方法变量 import moment from moment;// 获取当前时间 moment export const nowDateMoment moment(new Date()); export const nowDateY moment(new Date()).format(YYYY); export const nowDateM moment(new Date()).f…...
JavaScript 对话框的魔法与艺术
在Web开发的世界里,JavaScript 对话框是用户与网页互动的重要桥梁。它们不仅能够提供即时反馈,还能收集用户的输入信息,从而增强用户体验。本文将深入探讨JavaScript对话框的各种类型、用法及其背后的原理,并通过丰富的实例展示如…...
java+springboot+mysql私人会所管理系统
项目介绍: 使用javaspringbootmysql开发的私人会所管理系统,系统包含管理员、技师、用户角色,功能如下: 管理员:用户管理;服务项目;技师管理;房间管理;预约管理&#x…...
Scrapy 爬虫框架全解析
一、Scrapy 框架概述 基本定义 Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。遵循 “请求…...
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000 01 前言 大数据系列,学到了Hive,搭建环境的时候,因为使用的是本机WSL2(别问为啥不用VMware,问就是条件有限,而且WS…...
【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录 一、跨库方式1:跨库导航二、手动跨库查询三、同服务器:自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器:自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…...
【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统
本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个…...
中电金信携手中远海科,共启贸易金融数智新篇章
在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT…...
有没有办法让爬虫更加高效,比如多线程处理?
要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...
Android历史版本主要更新说明
Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...
测试岗位应该学什么
以下是测试岗位需要学习的一些关键内容: 1. 测试理论和方法 - 了解不同类型的测试,如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言,如 Python、Java…...
华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
Preferences 数据持久化存储 用户首选项(Preferences) 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解! /*** 首选项 preferences - 实现数据持久化…...
【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变
在数字化时代,信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求,新版MinerU整合包应运而生,它不仅简化了从PDF到Markdown的转换过程,还为用户带来了前所未有…...
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
服务器批量清理redis keys,无法适用客户端必须直连的情况
在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法: shell K…...
单元测试SpringBoot
添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...
牛客网刷题 | BC126 小乐乐查找数字
😁博客主页😁:🚀从0至1-CSDN博客🚀 🤑博客内容🤑:🍭C语言、C、数据结构、嵌入式、Linux🍭 😎本文内容🤣:🍭BC1…...
Node一、fs 模块、path 模块、端口号、 http 模块、
一、Node.js了解 Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。 概念:使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序:提供接口和数据,网页资源等 ✓ 前端工程化 &#x…...
k8s service 配置AWS nlb load_balancing.cross_zone.enabled
在Kubernetes中配置NLB(Network Load Balancer)的跨区域负载均衡(cross-zone load balancing),需要使用服务注解(service annotations)来实现。根据AWS官方文档,以下是配置NLB跨区域…...
[分布式即时通讯系统] 注册类完善
我们在qss里添加err_tip样式,根据不同的状态做字体显示 #err_tip[statenormal]{color: green; } #err_tip[stateerr]{color: red; } 接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。 .h…...
C#使用HttpWebRequest下载文件
public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug(“HttpDownloadFile–准备以HTTP的方式下载文件,url:[” downloadUrl “]本地文件:【” localPath “…...
CentOS7环境安装php
直接安装 yum -y install php CentOS7默认安装是php5,现在php已有8.3版本 先查看php -v 版本 如果是低版本,可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...
【Excel学习记录】04-排序和筛选
1.排序 (1)简单排序 不建议选中某列后进行排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→升序/降序 (2)多条件排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→自定义排序→指定关键字、比较内…...
Python轻松获取抖音视频播放量
现在在gpt的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...
恢复删除的文件:6个免费Windows电脑数据恢复软件
数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…...
Go的Gin比java的Springboot更加的开箱即用?
前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…...
Java 中枚举的 toString 方法及其字段信息展示
在 Java 编程中,枚举(enum)是一种特殊的数据类型,用于定义一组固定的常量。枚举类型不仅限于简单的常量定义,还可以包含字段、方法以及构造函数,从而使其具备更强的表达能力。toString 方法是 Java 中所有对…...
Python数据分析(OpenCV视频处理)
处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...
DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能
目录 财务应付 金融信贷业务 近期,DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具,支持不同版式单据智能分类扩展,可选功能插件配置流程,满足多样业务场景。 随着全球化与信息化进程,企业的文件…...
python编程Day15-UnitTest框架的介绍
框架 framework为了解决一类事情的功能集合 Unittest 框架 是 Python 自带的单元测试框架 自带的, 可以直接使用, 不需要单外安装 测试人员 用来做自动化测试, 作为自动化测试的执行框架, 即 管理和执行用例的 使用原因 能够组织多个用例去执行提供丰富的断言方法能够生成测试报…...
Linux——进程控制模拟shell
1.进程创建 我们在之前的文章中介绍过进程创建的方法,可以通过系统调用接口fork来创建新的进程。 fork在创建完新的子进程之后,返回值是一个pid,对于父进程返回子进程的pid,对于子进程返回0。fork函数后父子进程共享代码ÿ…...
OpenCV的图像矫正
一、原理 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 透视变换(Perspective Transform)基于一个4对点的映射关系(4个源点到4个目标点),通过这些点之间的映射,可以计算一个变换…...
基于php求职招聘系统设计
摘要 随着社会信息化时代的到来,如今人们社会的生活节奏普遍加快,人们对于工作效率的要求也越来越高,企业 举办招聘会耗时耗财,个人参加招聘会漫无目的寻找不到“方向”,网络搜索工作量目的性不强,信息量繁…...
并行口的基本概念
单片机的并行口结构包括多个并行I/O端口,用于与外部设备进行并行数据传输。这些端口能够直接读写外部存储器、显示设备、打印机等外设的数据,是单片机与外界交互的重要通道。在深入探讨之前,我们先简要了解下单片机的基本概念。 单片机&…...
(六)机器学习 - 正态数据分布
正态数据分布,也称为高斯分布(Gaussian distribution),是一种在统计学中非常重要的概率分布。它描述了自然和社会科学中许多现象的分布情况,如人的身高、体重、智商等。正态分布的图形特征是中间高、两边低,…...
电脑系统报错找不到d3dcompiler_47.dll怎么修复?怎么预防“d3dcompiler_47.dll”文件缺失?
“d3dcompiler_47.dll”文件缺失的修复与预防策略 在日常使用电脑软件,尤其是运行大型游戏或图形密集型应用时,我们可能会遇到一些令人困惑的系统报错。其中之一便是“找不到d3dcompiler_47.dll”的错误提示。这个错误不仅影响软件的正常运行࿰…...
Github 2024-12-12 Go开源项目日报Top10
根据Github Trendings的统计,今日(2024-12-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Go Ethereum: 以太坊Go语言官方实现 创建周期:3717 天开发语言:Go协议类型:GNU Lesser General Public License v3.0Star数量:4504…...
RIP协议
介绍 路由信息协议RIP(Routing Information Protocol)是基于距离矢量(Distance-Vector)算法的路由协议,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol)。它的主要功能是帮助路…...
vue-router查漏补缺
一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…...
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作,包括开启日志归档和用户授权。 flink官方参考资料: https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤: 1.启用…...
mqtt.js 客户端封装
mqtt.js 客户端封装 没封装前使用 const client mqtt.connect(ws://10.10.20.9:9001) onMounted(() > {const topicList []const channelCount 12for(let i 0; i < channelCount; i) {topicList.push(/test/sendImage${i 1})}client.on(connect, () > {console…...
www.aws.training网站的账户密码如何修改
www.aws.training网站的账户密码如何修改 参加aws考试后, 账号密码如何修改呢? 是不是找了好久都找不到. 右上角, 我的账户, 点击注销. 然后会跳到页面: 点击那个网址链接, 进入新的页面,点安全: 右上角: 更改密码. 按提示来就好....
使用Python实现高性能数据存储
在数据驱动的时代,处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写,还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言,提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高…...