学习Qt笔记
前言:
学习笔记的内容来自B站up主阿西拜编程
《Qt6 C++开发指南 》2023(上册,完整版)_哔哩哔哩_bilibili《Qt6 C++开发指南 》2023(上册,完整版)共计84条视频,包括:00书籍介绍、1.1Qt简介、1.2Qt6安装等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV1km4y1k7CW/
哔哩哔哩_bilibili
https://www.bilibili.com/cheese/play/ss5138
一、Qt Creator 使用技巧
快捷键使用
| F4 | 在同名的头文件和源程序文件之间切换 |
| F2 | 变量:跳转到声明;函数:声明和定义切换 |
| Ctrl+Shift+R | 该名称,将所有用到这个字符的地方替换掉 |
| Ctrl+I | 为选中的文本自动缩进 |
| Ctrl+/ | 注释或取消注释 |
| F1 | 为光标所在的位置显示帮助文档 |
| Ctrl+Shift+S | 文件全部保存 |
| Ctrl+F | 调出查找和替换对话框 |
| F3 | 查找下一个 |
| Ctrl+B | 编译当前项目 |
| F5 | 开始调试 |
| F10 | 单步(略过)调试,执行当前程序语句 |
| F11 | 单步(跟踪)调试,如果当前行里有函数,就跟踪进入函数 |
| F9 | 设置或取消断点 |
二、 Qt的元对象系统
2.1 Qt的元对象系统概述
QT中引入元对象系统对标准C++语言进行了扩展。
概述
● Qobject类是所有使用元对象系统的类的基类
● 必须在一个类的开头部分插入宏Q_OBJECT,才可以使用元对象系统的特性。
当 MoC发现类中定义了Q OBJECT宏时,会为其生成相应的C++源文件
● 元对象编译器 (Meta-object Compiler,MOC) 是一个预处理器,先将Qt的特性
程序转换为标准C++程序,在由标准C++编译器进行编译
Object类:
元对象系统的特性是通过QObject的一些函数来实现的。
● 元对象 (meta object): 每个QObject及其子类的实例都有一个元对象 (静态变
量staticMetaObject) 。函数metaobject()可以返回它的指针。
● 类型信息: Qobject的inherits()函数可以判断继承关系。
● 动态翻译: 函数tr()返回一个字符串的翻译版本。
● 对象树:表示对象间从属关系的树状结构。Qobject提供了parent()、children().
findChildren()等函数。对象树中的某个对象被删除时,它的子对象也将被删除。
● 信号和槽:对象间的通信机制。
● 属性系统: 可以使用宏Q_PROPERTY定义属性,Qobject的setProperty()会设置属
性的值或定义动态属性; property函数会返回属性的值。
2.2 属性系统
属性系统:
在oobject的子类中可以通过Q_PROPERTY宏定义属性。
2.3 信号与槽
信号与槽是元对象系统支持的,对象间通信所采取的机制
connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));
最后一个参数:Qt::ConnectionType表示了信号与槽槽之间的关联方式
Qt::AutoConnection (缺省值):自动确定关联方式。
Qt::DirectConnection:信号被发射时,槽立即执行,槽函数与信号在同一线程
Qt::QueuedConnection: 事件循环回到接收者线程后执行槽,槽与信号在不同线程信号线程会被阻塞直
Qt::BlockingQueueConnection: 与Qt::QueuedConnection相似,到槽执行完毕。当槽函数与信号在同一线程,会造成死锁。
disconnect()函数的使用
1. 解除与一个sender所有signal的连接:
disconnect(myobject,nullptr,nullptr,nullptr);//静态函数
myobject->disconnect();//成员函数
2. 解除与一个特定信号的所有连接:
disconnect(myobject,SIGNAL(mysignal()),nullptr, nullptr);
myobject->disconnect(SIGNAL(mySignal()));
3. 解除与一个特定receiver的所有连接:
disconnect(myobject, nullptr,myReceiver,nullptr);
myobject->disconnect(myReceiver);
4. 解除一对特定的信号和槽的连接:
disconnect(lineEdit,&QLineEdit::textChanged,label,&QLabel::setText);
2.4 对象数
对象树
Qobject以对象树的形式组织自己,其构造函数里有一个parent参数。当用另一个
对象作为父对象创建一个QObject时,它会被添加到父对象的children()列表中,而
当父对象被删除时是时,它会被删除。这种方法非常适合GUI对象的需求。例如,
QShortcut(键盘快捷键)是相关窗口的子对象,因此当用户关闭该窗口时,快捷键
也会被删除。
三、C++补充知识——STL(标准模板库)
STL六大部件
- 容器(Containers)
- 分配器(Allocators)
- 算法(Algorithm)
- 迭代器(Iterators)
- 适配器(Adapters)
- 仿函数(Functors)
容器的分类
1、序列式容器(Sequence containers)
每个元素都有固定位置 - - 取决于插入时机和地点和元素值无关。
vector、 deque、 list、 stack、 queue
2、关联式容器 (Associated containers)
元素位置取决于特定的排序准则,和插入顺序无关。
set、multiset、map、multimap
相关文章:
学习Qt笔记
前言: 学习笔记的内容来自B站up主阿西拜编程 《Qt6 C开发指南 》2023(上册,完整版)_哔哩哔哩_bilibili《Qt6 C开发指南 》2023(上册,完整版)共计84条视频,包括:00书籍介…...
pymssql 报错误解决办法:20002, severity 9
错误 解决办法 python3.6,安装pymssql低版本(pymssql-2.1.5-cp36-cp36m-win32.whl)...
Web缓存代理
目录 一.Web缓存代理 配置Nginx 缓存代理: 修改web服务器的配置文件: 修改192.168.233.10代理服务器的配置文件: 访问页面看看: 对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来…...
Rust-模式解构
match 首先,我们看看使用match的最简单的示例: exhaustive 有些时候我们不想把每种情况一一列出,可以用一个下划线来表达“除了列出来的那些之外的其他情况”: 下划线 下划线还能用在模式匹配的各种地方,用来表示…...
C#基于ScottPlot进行可视化
前言 上一篇文章跟大家分享了用NumSharp实现简单的线性回归,但是没有进行可视化,可能对拟合的过程没有直观的感受,因此今天跟大家介绍一下使用C#基于Scottplot进行可视化,当然Python的代码,我也会同步进行可视化。 P…...
基于JAVA+ssm开发的在线报名系统设计与实现【附源码】
基于JAVAssm开发的在线报名系统设计与实现【附源码】 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 …...
蓝桥——第 3 场 小白入门赛(A-D)
文章目录 一、题目A.召唤神坤基本思路:代码 B.聪明的交换策略基本思路:代码 C.怪兽突击基本思路:代码 D.蓝桥快打基本思路代码 一、题目 A.召唤神坤 基本思路: 贪心, 使结果最大,希望两边w[i],w[k]是较大…...
Java项目:06 Springboot的进销存管理系统
作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 进销存管理系统 介绍 进销存系统是为了对企业生产经营中进货、出货、批发销售、付款等全程进行(从接获订单合同开 始,进入物料采购、入…...
数据结构与算法之美学习笔记:47 | 向量空间:如何实现一个简单的音乐推荐系统?
这里写自定义目录标题 前言算法解析总结引申 前言 本节课程思维导图: 很多人都喜爱听歌,以前我们用 MP3 听歌,现在直接通过音乐 App 在线就能听歌。而且,各种音乐 App 的功能越来越强大,不仅可以自己选歌听࿰…...
5《Linux》
文章目录 查看端口号查看进程号查看IP查看与某台机器连接情况 Linux查看日志的命令?head [-n 行数参数】tail [-n 行数参数】cat [-n 行号展示】tac [-n 行号展示】 Linux操作文本-三剑客grep-擅长过滤正则过滤sed-擅长取行awk-擅长取列 Linux性能监控的命令&#x…...
go-carbon v2.3.5 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...
VQ-VAE(Neural Discrete Representation Learning)论文解读及实现
pytorch 实现git地址 论文地址:Neural Discrete Representation Learning 1 论文核心知识点 encoder 将图片通过encoder得到图片点表征 如输入shape [32,3,32,32] 通过encoder后输出 [32,64,8,8] (其中64位输出维度) 量化码本 先随机构建一个码本,维度…...
OpenAI的ChatGPT:引领人工智能交流的未来
如果您在使用ChatGPT工具的过程中感到迷茫,别担心,我在这里提供帮助。无论您是初次接触ChatGPT plus,还是在注册、操作过程中遇到难题,我都将为您提供一对一的指导和支持。(qq:1371410959) 一、ChatGPT简介 OpenAI的ChatGPT是一…...
es集群安装及优化
es主节点 192.168.23.100 es节点 192.168.23.101 192.168.23.102 1.安装主节点 1.去官网下载es的yum包 官网下载地址 https://www.elastic.co/cn/downloads/elasticsearch 根据自己的需要下载对应的包 2.下载好之后把所有的包都传到从节点上,安装 [rootlocalho…...
【开源】基于JAVA+Vue+SpringBoot的医院门诊预约挂号系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2 科室医生档案模块2.1.3 预约挂号模块2.1.4 医院时政模块 2.2 可行性分析2.2.1 可靠性2.2.2 易用性2.2.3 维护性 三、数据库设计3.1 用户表3.2 科室档案表3.3 医生档案表3.4 医生放号…...
Java Swing 图书借阅系统 窗体项目 期末课程设计 窗体设计
视频教程: 【课程设计】图书借阅系统 功能描述: 图书管理系统有三个角色,系统管理员、图书管理员、借阅者; 系统管理员可以添加借阅用户; 图书管理员可以添加图书,操作图书借阅和归还; 借…...
2024.01.09.Apple_UI_BUG
我是软件行业的,虽然不是手机设计的,但是这个设计真的导致经常看信息不完整,要下拉的。 特别读取文本或者其他文件的时候,上面有个抬头就是看不到,烦,体验感很差...
K8S Nginx Ingress Controller client_max_body_size 上传文件大小限制
现象 k8s集群中,上传图片时,大于1M就会报错 413 Request Entity Too Large Nginx Ingress Controller 的版本是 0.29.0 解决方案 1. 修改configmap kubectl edit configmap nginx-configuration -n ingress-nginx在 ConfigMap 的 data 字段中设置参数…...
Untiy HTC Vive VRTK 开发记录
目录 一.概述 二.功能实现 1.模型抓取 1)基础抓取脚本 2)抓取物体在手柄上的角度 2.模型放置区域高亮并吸附 1)VRTK_SnapDropZone 2)VRTK_PolicyList 3)VRTK_SnapDropZone_UnityEvents 3.交互滑动条 4.交互旋…...
机器学习指南:如何学习机器学习?
机器学习 一、介绍 你有没有想过计算机是如何从数据中学习和变得更聪明的?这就是机器学习 (ML) 的魔力!这就像计算机科学和统计学的酷炫组合,计算机从大量信息中学习以解决问题并做出预测,就像人类一样。 …...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
