当前位置: 首页 > news >正文

学习Qt笔记

前言:

        学习笔记的内容来自B站up主阿西拜编程

《Qt6 C++开发指南 》2023(上册,完整版)_哔哩哔哩_bilibili《Qt6 C++开发指南 》2023(上册,完整版)共计84条视频,包括:00书籍介绍、1.1Qt简介、1.2Qt6安装等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1km4y1k7CW/

哔哩哔哩_bilibiliicon-default.png?t=N7T8https://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 的功能越来越强大,不仅可以自己选歌听&#xff0…...

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) 的魔力!这就像计算机科学和统计学的酷炫组合,计算机从大量信息中学习以解决问题并做出预测,就像人类一样。 …...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

LangFlow技术架构分析

🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...