Qt 总结
由于工作需要用到Qt。把过程中学习到的东西记录下来,希望能帮到他人和将来的自己。
由于需要快速实现需求,所以对Qt只是使用,并没有对原理的深入理解。
故此文只适合入门,不适合深入学习Qt。
文章目录
- 安装&维护
- 示例&教程
- 构建系统
- 编译套件
- Qt命令行环境
- 半自动的内存管理
- 信号槽机制
- GUI图形界面开发
- 打包
- 帮助文档
安装&维护
-
在线安装器
-
在qt官网下载
-
选择组件,注意选择qt的版本和编译器的版本,以及ide(qt creator)。
-
lts版本较稳定。社区版的lts版本有6.2.4,5.15.2
-
-
维护工具
-
位置在qt的安装目录
-
日后可随意增删改组件
-
-
附注: 使用国内镜像源加速
- 用命令行启动在线安装器或维护工具,并加上命令行参数–mirror https://mirror.nju.edu.cn/qt
示例&教程
- 在qt creator的欢迎界面
构建系统
- qmake/cmake
- 要使用某个模块,要先在cmake/qmake中添加
- 把 头文件/源文件/资源文件/界面文件 添加到项目中
编译套件
- windows上有mingw/msvc等
Qt命令行环境
-
功能:打包、测试、预览图形界面等
-
位置:开始菜单->所有应用->Qt-> Qt x.x.xx(xx.xx.xx)
半自动的内存管理
-
继承自QObject/QWidget的对象。可以设置父对象。所有对象可以组成一个或若干个对象树。根对象被回收时它的子孙对象会自动被回收。
-
附:c++的其他内存管理方式:raii等。
信号槽机制
- 观察者模式
- 是QObject的子孙且包含Q_OBJECT宏的类,可以声明信号或槽
- 信号:用singls宏声明,只有声明没有实现
- 槽:用slots宏声明,有实现
- 例子:
//对象1发出信号1时,对象2的信号2/槽2会被触发QObject::connect( 对象1, 信号1, 对象2, 信号2/槽2 )
//对象1发出信号1时,lambda表达式会被触发
QObject::connect( 对象1, 信号1, lambda表达式 )//手动发射信号emit 对象.信号名()
GUI图形界面开发
-
界面开发方式
- widgets-based
- 直接new控件
- ui文件
- qt quick
-
程序执行时用js引擎解析qml文件,边执行边解析渲染
-
note: 如果使用cmake,图片要添加到 cmake
-
事件处理
- connect、on信号名首字母大写
-
组件,参考:
- qt quick 核心编程 第7章
- qml 组件 https://blog.csdn.net/kenfan1647/article/details/120546294
- qml 自定义控件 https://blog.csdn.net/u013718730/article/details/104160498
- qml 自定义类型 https://blog.csdn.net/beibeix2015/article/details/111991060
-
qml与c++交互
- 此文写的很细致适合入门:https://blog.csdn.net/xiezhongyuan07/article/details/109245920
- 此文总结的很全面:https://blog.csdn.net/xiezhongyuan07/article/details/109318209
- 这是demo:https://gitee.com/xx2211/projects
- 这是进阶demo
- cpp中使用qml https://blog.csdn.net/bureau123/article/details/124454536
- qml中使用cpp https://blog.csdn.net/bureau123/article/details/124378214
-
- widgets-based
-
窗口坐标系
- 左上为原点,向右为x正方向,向下为y正方向
-
view & model
- view显示数据的容器 model存储数据 delegate定义显示方式
-
自定义控件(widget)
- 继承Qt控件,修改外观、布局、添加子控件等。
- ui设计器中使用自定义控件,先使用基本控件,再“提升为”自定义控件
-
dpi, pointSize, pixeSize
- pointSize自适应,pixelSize像素单位
打包
- windeployqt命令,有时需要手动替换依赖
- 打包成一个文件:可以使用enigma virtual box工具,但可能有许可争议
- 验证打包是否成功:可以在sandbox中尝试运行
帮助文档
- 工具栏->帮助->索引
- 在线文档 https://doc.qt.io/ https://doc.qt.io/all-topics.html
- 第三方qml教程 https://blog.csdn.net/bureau123/category_11712436.html
- 第三方qt教程 https://blog.csdn.net/bureau123/category_10691949.html
相关文章:
Qt 总结
由于工作需要用到Qt。把过程中学习到的东西记录下来,希望能帮到他人和将来的自己。 由于需要快速实现需求,所以对Qt只是使用,并没有对原理的深入理解。 故此文只适合入门,不适合深入学习Qt。 文章目录 安装&维护示例&教…...
中间件复习之-RPC框架
什么是RPC框架? RPC(Remote Procedure Call):远程过程调用。当多个应用部署在多个服务器上时,由于他们不在一个内存空间上,因此需要网络来进行通信,而RPC允许它像调用本地方法一样调用远程服务。 RPC原理 服务消费方通过RPC客户…...
AcWing 787. 归并排序——算法基础课题解
AcWing 787. 归并排序 文章目录 题目描述CGo模板 题目描述 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有…...
力扣1379---找出克隆二叉树的相同节点(Java、DFS、简单题)
目录 题目描述: 思路描述: 代码: (1): (2): 题目描述: 给你两棵二叉树,原始树 original 和克隆树 cloned,以及一个位于原始树 ori…...
FLink学习(三)-DataStream
一、DataStream 1,支持序列化的类型有 基本类型,即 String、Long、Integer、Boolean、Array复合类型:Tuples、POJOs 和 Scala case classes Tuples Flink 自带有 Tuple0 到 Tuple25 类型 Tuple2<String, Integer> person Tuple2.…...
Failed to resolve import “Home/components/HomeNew.vue“. Does the file exist?
错误信息 [plugin:vite:import-analysis] Failed to resolve import "/apis/home.js" from "src/views/Home/components/HomeNew.vue". Does the file exist? 错误原因 路径错误 解决方法...
《价值》-张磊-高瓴资本-3-建立人脉和信任;顺应趋势,把握机遇;
第三章 价值投资初试炼 2005.6.1 创办高瓴资本 许多人问我为什么一直在创业,其实我倒没想到自己非要创业成功不可,只是觉得一定要做点事,做点有意义的事。归根到底,可能是“爱折腾,不满足现状,爱挑战自己”…...
游戏引擎中的物理应用
一、 角色控制器 Character Controller和普通的动态对象(Dynamic Actor )是不同的,主要的三个特点是: 它拥有可控制的刚体间的交互假设它是有无穷的摩擦力(可以站停在位置上),没有弹性加速和刹车几乎立即…...
复现k8s黄金票据学习
1.什么是黄金票据 在 Kubernetes 中,"黄金票据"并不是一个常见的术语。可能你想了解的是服务账户(Service Account)。服务账户是 Kubernetes 中用于身份验证和授权的一种机制。它们允许 Pods 或其他工作负载在 Kubernetes 集群中与…...
08-JavaScript BOM定时器及JS动画
1. 设置定时器 1.1设置超时定时器 超时调用需要使用window对象的setTimeout()方法,该方法接受两个参数:调用函数或计算表达式和以毫秒为单位的时间(即在执行代码前需要等待多少毫秒)。 //setTimeout(callback, after) //callba…...
边缘计算盒子与云计算:谁更适合您的业务需求?
边缘计算盒子和云计算,这两个概念听起来可能有点复杂,但其实它们就是两种不同的数据处理方式。那谁更适合您的业务需求呢?咱们来详细说说。 边缘计算盒子,就像是个小型的数据处理中心,放在离你业务现场比较近的地方。它…...
浅聊什么是Redis?
需求:MySQL面临大量的查询,即读写操作,因此类比CPU,给数据加缓存,Redis诞生。应用程序从MySQL查询的数据,在Redis设置缓存(记录在内存中,无需IO操作),后再需要…...
java算法day43 | ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零
1049. 最后一块石头的重量 II 核心思想: 尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。 是不是感觉和昨天讲解的416. 分割等和子集 (opens new window)非常像了。那么分成两堆石头,一堆石头的…...
练气第六天
问:ANR怎么分析? ANR问题,这其实是一个非常综合性的问题,因为anr会涉及CPU负载,内存空间大小,线程锁,GC回收,这里面每个点,都是非常考验我们基本功的。 分析ANR问题,需…...
认识 Redis 与 分布式
Redis 官网页面 Redis官网链接 Redis 的简介 Redis 是一个在内存中存储数据的中间件 一方面用于作为数据库,另一方面用于作为数据缓存,适用于分布式系统中 Redis 基于网络,进行进程间通信,把自己内存中的变量给别的进程…...
Linux初学(十二)AWK进阶
一、AWK 1.1 简介 AWK是Linux中重要的文本处理工具Linux三剑客只一处理的对象可以是一个具体的文件,也可以是一个命令的执行结果AWK按行读取文件,将每一行视为一条记录 案例一:获取系统中每个用户的uid 方法一:cat /etc/passwd |…...
文字识别 Optical Character Recognition,OCR CTC STN
文字识别 Optical Character Recognition,OCR 自然场景文本检测识别技术综述 将图片上的文字内容,智能识别成为可编辑的文本。 场景文字识别(Scene Text Recognition,STR) OCR(Optical Character Recognition, 光学字符识别)传统上指对输入扫描文档图像进行分析处理,识…...
四、MySQL读写分离之MyCAT
一、读写分离概述 1、什么是读写分离: 读写分离:就是将读写操作分发到不同的服务器,读操作分发到对应的服务器 (slave),写操作分发到对应的服务器(master) ① M-S (主从) 架构下&…...
通讯录项目实现
引言:通过顺序表的逻辑实现通讯录。这里就不讲关于顺序表的函数了。如果有不明白的可以看我写的顺序表的博客。 目录 顺序表与通讯录的比较 各源文件文件大榄 Contact.c中通讯录相关函数的定义 初始化和销毁通讯录 添加联系人: 删除联系人…...
xss相关知识点与绕过思路总结
前言 对xss的绕过进行了系统的学习与实践后,重新审视一下xss,对他的绕过进行一个总结。 (当然我也是个小白,这些也是我当时瞎鸡儿乱搞绕过了几个xss自己做的小总结) 可能有点丑陋,献丑了。 好博客推荐 …...
深入解析语言模型:原理、实战与评估
引言 随着人工智能的飞速发展,语言模型作为自然语言处理(NLP)的核心技术之一,日益受到业界的广泛关注。本文旨在深入探讨语言模型的原理、实战应用以及评估方法,帮助读者更好地理解和应用这一技术。 一、语言模型原理…...
Elasticsearch 的索引优化常规项
优化常规项 https://blog.csdn.net/bairo007/article/details/132019575 1、按实际情况适当调整主分片的数量 如果主分片数量太少,会导致每个分片中的数据量过大,而且无法利用集群中所有节点的计算资源。如果主分片数量太多,会导致索引过度…...
【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类名称)
这篇文章,主要介绍如何使用JavaParser解析Java源代码中的类信息(javadoc注释、类名称)。 目录 一、JavaParser依赖库 1.1、引入依赖 1.2、获取类注释信息...
Stable Diffusion扩散模型【详解】小白也能看懂!!
文章目录 1、Diffusion的整体过程2、加噪过程2.1 加噪的具体细节2.2 加噪过程的公式推导 3、去噪过程3.1 图像概率分布 4、损失函数5、 伪代码过程 此文涉及公式推导,需要参考这篇文章: Stable Diffusion扩散模型推导公式的基础知识 1、Diffusion的整体…...
关于rabbitmq的prefetch机制
消息预取机制(Prefetch Mechanism)是RabbitMQ中用于控制消息传递给消费者的一种机制。它定义了在一个信道上,消费者允许的最大未确认的消息数量。一旦未确认的消息数量达到了设置的预取值,RabbitMQ就会停止向该消费者发送更多消息…...
机器学习介绍
机器学习是人工智能(AI)的一个分支,它使计算机系统能够从数据中学习并改进它们的性能。机器学习的核心在于开发算法,这些算法可以从大量数据中识别模式和特征,并用这些信息来做出预测或决策,而无需进行明确…...
OpenCV4.9开发之Window开发环境搭建
1.打开OpenCV所在github地址 2.点击opencv仓库,进入仓库详情,点击右下方的OpenCV 4.9.0进入下载页面 3.点击opencv-4.9.0-windows.exe下载 开始下载中... 下载完成 下载完成后,双击运行解压,默认解压路径,修改为c:/...
DDD 中的实体和值对象有什么区别?
在DDD中,实体 Entity 和值对象 Value Object 是两个基本的概念,它们之间有一些重要的区别。 唯一性:实体是唯一的,每个实体都有一个唯一的标识符,即使它的属性在一段时间内发生了变化,它仍然是这个实体。与…...
算法-最值问题
#include<iostream> using namespace std; int main() {int a[7];//上午上课时间int b[7];//下午上课时间int c[7];//一天总上课时间for (int i 0; i < 7; i) {cin >> a[i] >> b[i];c[i] a[i] b[i];}int max c[0];//max记录最长时间int index -1;//索…...
Go 性能压测工具之wrk介绍与使用
在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug;压力测试(压测)是确保系统在高负载情况下仍能稳定运行的重要步骤。通过模拟高并发场景,可以评估系统的性能瓶颈、可靠…...
动漫建模代做网站百度一下/免费发布广告信息平台
【正文】 本文列数了软件黑盒测试过程中,在被测试软件中可能存在的常见软件问题。本文不会详细讨论基本的软件测试思想与常用技术,仅针对在软件黑盒测试过程中若干的问题做描述,并提供个人的参考测试意见与防范意见,希望可以为初学…...
免费做企业推广的网站/页面关键词优化
服务端 //1.引入(利用express框架) const express require(express); // const { request } require(http);//2.创建应用对象 const app express();//3.创建路由规则 //response 是对响应报文的封装 //request 是对请求报文的封装app.all(/server,(r…...
商丘网站制作费用/平台优化是指什么
品味电视,品味人生!很少看电视剧的我,最近看了一步名为“闪婚”的电视剧,其情节让人深思。爱情没钱就没幸福吗,一个穷光蛋就找不到爱情吗。现实的社会,现实的电视剧。是谁造就了这个社会风气,很…...
上海品牌网站建设公司/软文标题
在Oracle中判断一个用户自定义对象是否存在,可以通过如下Sql语句来实现:select * from user_objects where object_name YOUROBJECT;这样可以取得对象的所有信息. 需要注意的是:1.查询条件中的对象名要大写2.对象名有可能重复,所以需要再指定一个OBJECT_TYPE条件,才能更精确的判…...
做胃镜需那好天津津门网站A/国际新闻今天最新消息
上图是每个栈帧的内部结构,一个栈能放多少栈帧,取决于栈帧的大小,栈帧的大小取决于局部变量表 这篇主要讲解 局部变量表: 一,概念: (1)局部变量表也被称之为局部变量表数组或本地…...
做购物平台网站 民治/怎样推广小程序平台
这两天公司成立了go语言学习兴趣小组,慕名参与了学习。目前对于go是0基础,只知道它可以做高并发、效率快、编译简单、母语是C. go的安装有多种形式,编译安装是比较慢的一个,今天我就记录一下学习go编译安装流程。 1、下载软件包 h…...