QT学习备份
2023年1月2日09:00:32
1.信号/槽编辑器
发送者:控件
信号:是控件发出的信号
接受者:包含控件的容器
槽:程序上用slot标识的方法
2.Q_OBJECT宏
只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。
凡是QObject类(不管是直接子类还是间接子类),
都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽,都应该添加这个宏。
这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力。
因此,如果你觉得你的类不需要使用信号槽,就不添加这个宏,就是错误的。其它很多操作都会依赖于这个宏。
这个宏应该放在头文件中。
Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,
由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObject类。
PS.qt特有的需要用moc编译,并且必须继承QOBJECT类
3.在构造控件的函数中,写connect
connect(timer, SIGNAL(timeout()), this, SLOT(updateValue()));
timer:控件或者是会发出信号的类
SINAL(timeout):信号
SLOT(updateValue()):槽,自定义的方法、
this是接收者
PS.如果用了connect,在ui里面就看不到了
slots = Q_SLOTS
signal = Q_SIGNALS
PS.互换后没发现区别
5.换页控件
Stacked widget
串口
#include “qextserialport.h”
TCP
#include “qtcpsocket.h”
QTimer 定时器类
7.QStringList
QStringList baudList;
baudList << “50” << “75” << “100” << “134” << “150” << “200” << “300” << “600” << “1200”
<< “1800” << “2400” << “4800” << “9600” << “14400” << “19200” << “38400”
<< “56000” << “57600” << “76800” << “115200” << “128000” << “256000”;
8.全局变量写法
class AppData
{
public:
//全局变量
static QStringList Intervals;
static QStringList Datas;
static QStringList Keys;
static QStringList Values;
}
控件必须指定父容器
函数QObject::connect()将“关闭”按钮btn的clicked() 信号同窗口pWidget的close() 槽关联起来。
QObject::connect()函数中,实参btn是发信号的源对象指针,实参pWidget是接受信号的目标对象指针;
clicked()信号和close()槽已经分别由Qt的QPushButton类和QWidget类定义了,
所以无需事先声明和定义就可以直接使用;
SIGNAL()和SLOT()是Qt定义的两个宏,
它们返回其参数的C风格字符串(const char *)。->即返回所调用的字符串
a)必须要包含头文件的情况
1.A继承C,A类的头文件中必须要包含C的头文件;
2.A中包含C类的成员变量,A类的头文件中必须包含C的头文件;
3.A中的inline函数中引用到了C类的成员,A类的头文件必须包含C的头文件;
b)可以用类的前置声明代替头文件的情况
1.A中包含C类的指针成员或引用成员;
2.A中声明的函数的参数或返回值是C的变量(C类型,C指针类型,C引用类型);
12.layout必须用指针
Layout->setSpacing(60) 设置控件间间隙
ayout->setMargin(40) 设置layout到两边边缘
2023年1月4日09:17:41
1.槽函数不能加参数?
A:不是,要求信号和槽的签名一致
2.内建窗口可以静态调用也可以实例调用
QWidget::palette()获取一个窗口部件的调色板
QPalette::WindowText:窗口部件的前景色
QPalette::Base:文本输入窗口部件的背景色
QPalette::Text:和
qApp->processEvents();用于保证时间循环还可以处理其他事件
3.普通控件(非布局控件)和内建窗口都需要先指定父类
4.qdebug<<something 可以显示到输出窗口
5.不允许使用不完整类型->需要添加对应的头文件
6.一个信号和多个槽关联的情况下,当发出该信号的时候,
与该信号关联的各个槽以任意的先后顺序立即执行
(即槽函数的执行顺序是随机的,与槽关联的顺序没有关系)
需要关联的信号和槽的签名必须是等同的,
即信号的参数类型和参数个数与接受该信号的槽的参数类型和参数个数相同;
深拷贝:完整复制品(副本)
浅拷贝:引用复制(引用)
8.qrc文件
用于添加资源,比如说一些图标,图片这些
1.添加前缀
2.添加文件,文件最好复制到qrc源路径下的文件夹
3.看Qurl是什么,在程序上可以直接引用
9.伙伴编辑模式:
可以在设计器中建立QLabel和其他窗口部件的伙伴关系
PS.仅用于QLabel部件
QLineEdit* priceLineEdit = new QLineEdit(this);
QLabel* priceLabel = new QLabel(“&Price”,this);
priceLabel->setBuddy(priceLineEdit)
PS.当按下标签的快捷键(在字符前面加前缀&)的时候->会跳到其伙伴身上
QSizePolicy:尺寸策略
Fix 不会发生任何的伸缩
minimum 推荐的大小是它的最小尺寸,它不会变得更小,但是可以变得更大
maximum 推荐的大小是它的最大尺寸,不会变得更大
preferred 推荐大小为优先选择,可以变大或者变小
expanding 能够感知到推荐的大小,但是会以尽可能大的空间来放置窗口部件
ignore 不能感知到推荐的大小,会以尽可能大的空间来放置窗口部件
2023年1月5日09:08:49
1.QFrame容器重新组织窗口部件,可修改布局
PS.相当于放进抽屉
2.QDir可以返回应用程序所在目录的绝对路径
3.单一继承方式需要通过成员ui来引用Qt设计器中部署的窗口不见,
而在多继承方式中可以直接引用这些窗口部件
4.QFileDialog::getExistingDirectory(this,
tr(“choose searched path”),
QDir::currentPath(),
QFileDialog::ShowDirsOnly);查找文件夹
5.严格命名槽可以直接关联信号->void on_<窗口部件名>_<信号名>(<信号参数>);
6.用vs来编程,对应的控件,需要加上ui.前缀才能找到,否则在connect的时候会报错
2023年1月11日09:43:25
1.
form.ui文件编译后,会生成头文件
form.h里面的widget类,多继承这个头文件里面的类,就能实时刷新变量
class QTGUI : public QMainWindow,public Ui_QTGUIClass
2.参数 parent,指定了窗口部件的父窗口部件,
如果parent = 0(默认值),新建的窗口部件将是一个窗口;
否则,新建的窗口部件是parent的子窗口部件(是否是一个窗口还需要第二个参数决定),
如果新窗口部件不是一个窗口的话,它将会出现在父窗口部件的界面内部。
3.菜单是小部件,是QAction->actNew,需要连接槽函数
connect(actNew,SIGNAL(trigged()),this,SLOT(doNew()))
2023年1月12日11:36:46
1.Qt提供了QFile类来进行文件操作。
为了更方便地处理文本文件和二进制文件,
Qt还提供了QTextStream类和QDataStream类。
处理临时文件可以使用QTemporaryFile,获取文件信息可以使用QFileInfo,
处理目录使用QDir。监视文件和目录变化则可以使用QFileSystemWatcher。2023年1月2日09:00:32
1.信号/槽编辑器
发送者:控件
信号:是控件发出的信号
接受者:包含控件的容器
槽:程序上用slot标识的方法
2.Q_OBJECT宏
只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用信号槽,必须继承QObject。
凡是QObject类(不管是直接子类还是间接子类),
都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽,都应该添加这个宏。
这个宏的展开将为我们的类提供信号槽机制、国际化机制以及 Qt 提供的不基于 C++ RTTI 的反射能力。
因此,如果你觉得你的类不需要使用信号槽,就不添加这个宏,就是错误的。其它很多操作都会依赖于这个宏。
这个宏应该放在头文件中。
Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,
由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObject类。
PS.qt特有的需要用moc编译,并且必须继承QOBJECT类
3.在构造控件的函数中,写connect
connect(timer, SIGNAL(timeout()), this, SLOT(updateValue()));
timer:控件或者是会发出信号的类
SINAL(timeout):信号
SLOT(updateValue()):槽,自定义的方法、
this是接收者
PS.如果用了connect,在ui里面就看不到了
slots = Q_SLOTS
signal = Q_SIGNALS
PS.互换后没发现区别
5.换页控件
Stacked widget
串口
#include “qextserialport.h”
TCP
#include “qtcpsocket.h”
QTimer 定时器类
7.QStringList
QStringList baudList;
baudList << “50” << “75” << “100” << “134” << “150” << “200” << “300” << “600” << “1200”
<< “1800” << “2400” << “4800” << “9600” << “14400” << “19200” << “38400”
<< “56000” << “57600” << “76800” << “115200” << “128000” << “256000”;
8.全局变量写法
class AppData
{
public:
//全局变量
static QStringList Intervals;
static QStringList Datas;
static QStringList Keys;
static QStringList Values;
}
控件必须指定父容器
函数QObject::connect()将“关闭”按钮btn的clicked() 信号同窗口pWidget的close() 槽关联起来。
QObject::connect()函数中,实参btn是发信号的源对象指针,实参pWidget是接受信号的目标对象指针;
clicked()信号和close()槽已经分别由Qt的QPushButton类和QWidget类定义了,
所以无需事先声明和定义就可以直接使用;
SIGNAL()和SLOT()是Qt定义的两个宏,
它们返回其参数的C风格字符串(const char *)。->即返回所调用的字符串
a)必须要包含头文件的情况
1.A继承C,A类的头文件中必须要包含C的头文件;
2.A中包含C类的成员变量,A类的头文件中必须包含C的头文件;
3.A中的inline函数中引用到了C类的成员,A类的头文件必须包含C的头文件;
b)可以用类的前置声明代替头文件的情况
1.A中包含C类的指针成员或引用成员;
2.A中声明的函数的参数或返回值是C的变量(C类型,C指针类型,C引用类型);
12.layout必须用指针
Layout->setSpacing(60) 设置控件间间隙
ayout->setMargin(40) 设置layout到两边边缘
2023年1月4日09:17:41
1.槽函数不能加参数?
A:不是,要求信号和槽的签名一致
2.内建窗口可以静态调用也可以实例调用
QWidget::palette()获取一个窗口部件的调色板
QPalette::WindowText:窗口部件的前景色
QPalette::Base:文本输入窗口部件的背景色
QPalette::Text:和
qApp->processEvents();用于保证时间循环还可以处理其他事件
3.普通控件(非布局控件)和内建窗口都需要先指定父类
4.qdebug<<something 可以显示到输出窗口
5.不允许使用不完整类型->需要添加对应的头文件
6.一个信号和多个槽关联的情况下,当发出该信号的时候,
与该信号关联的各个槽以任意的先后顺序立即执行
(即槽函数的执行顺序是随机的,与槽关联的顺序没有关系)
需要关联的信号和槽的签名必须是等同的,
即信号的参数类型和参数个数与接受该信号的槽的参数类型和参数个数相同;
深拷贝:完整复制品(副本)
浅拷贝:引用复制(引用)
8.qrc文件
用于添加资源,比如说一些图标,图片这些
1.添加前缀
2.添加文件,文件最好复制到qrc源路径下的文件夹
3.看Qurl是什么,在程序上可以直接引用
9.伙伴编辑模式:
可以在设计器中建立QLabel和其他窗口部件的伙伴关系
PS.仅用于QLabel部件
QLineEdit* priceLineEdit = new QLineEdit(this);
QLabel* priceLabel = new QLabel(“&Price”,this);
priceLabel->setBuddy(priceLineEdit)
PS.当按下标签的快捷键(在字符前面加前缀&)的时候->会跳到其伙伴身上
QSizePolicy:尺寸策略
Fix 不会发生任何的伸缩
minimum 推荐的大小是它的最小尺寸,它不会变得更小,但是可以变得更大
maximum 推荐的大小是它的最大尺寸,不会变得更大
preferred 推荐大小为优先选择,可以变大或者变小
expanding 能够感知到推荐的大小,但是会以尽可能大的空间来放置窗口部件
ignore 不能感知到推荐的大小,会以尽可能大的空间来放置窗口部件
2023年1月5日09:08:49
1.QFrame容器重新组织窗口部件,可修改布局
PS.相当于放进抽屉
2.QDir可以返回应用程序所在目录的绝对路径
3.单一继承方式需要通过成员ui来引用Qt设计器中部署的窗口不见,
而在多继承方式中可以直接引用这些窗口部件
4.QFileDialog::getExistingDirectory(this,
tr(“choose searched path”),
QDir::currentPath(),
QFileDialog::ShowDirsOnly);查找文件夹
5.严格命名槽可以直接关联信号->void on_<窗口部件名>_<信号名>(<信号参数>);
6.用vs来编程,对应的控件,需要加上ui.前缀才能找到,否则在connect的时候会报错
2023年1月11日09:43:25
1.
form.ui文件编译后,会生成头文件
form.h里面的widget类,多继承这个头文件里面的类,就能实时刷新变量
class QTGUI : public QMainWindow,public Ui_QTGUIClass
2.参数 parent,指定了窗口部件的父窗口部件,
如果parent = 0(默认值),新建的窗口部件将是一个窗口;
否则,新建的窗口部件是parent的子窗口部件(是否是一个窗口还需要第二个参数决定),
如果新窗口部件不是一个窗口的话,它将会出现在父窗口部件的界面内部。
3.菜单是小部件,是QAction->actNew,需要连接槽函数
connect(actNew,SIGNAL(trigged()),this,SLOT(doNew()))
2023年1月12日11:36:46
1.Qt提供了QFile类来进行文件操作。
为了更方便地处理文本文件和二进制文件,
Qt还提供了QTextStream类和QDataStream类。
处理临时文件可以使用QTemporaryFile,获取文件信息可以使用QFileInfo,
处理目录使用QDir。监视文件和目录变化则可以使用QFileSystemWatcher。
相关文章:
QT学习备份
2023年1月2日09:00:32 1.信号/槽编辑器 发送者:控件 信号:是控件发出的信号 接受者:包含控件的容器 槽:程序上用slot标识的方法 2.Q_OBJECT宏 只有继承了QObject类的类,才具有信号槽的能力。所以,为了使用…...

【wiki知识库】03.前后端的初步交互(展现所有的电子书)
📝个人主页:哈__ 期待您的关注 目录 一、🔥今日目标 二、📂前端配置文件补充 三、🌏前端Vue的改造 四、💡总结 一、🔥今日目标 在上一篇文章当中,我已带大家把后端的一些基本工…...
AOP——学习
AOP(面向切面编程)是Spring框架的重要特性之一,用于分离关注点并处理横切关注点,如日志记录、安全性和事务管理。在面试中,AOP相关的问题通常会涉及基本概念、应用场景、实际使用、以及与其他编程范式的比较。以下是一…...

Linux静态库、共享动态库介绍、制作及使用
参考学习:Linux下的各种文件 、动态库基本原理和使用方法,-fPIC选项的来龙去脉 、Linux静态库和动态库分析 文章写作参考:Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com) 一.Linux共享库、静态库、动态库详解 使用G…...

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)
【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO(Coordinate Format)2. CSR(Compressed Sparse Row Format) 二、Paddle稀疏张量支持1. 创建 C…...
Linux系统维护
1. 批量安装部署 2. 初始化配置 3. 禁用Selinux 永久更改 SELinux 配置: 编辑 SELinux 配置文件:使用文本编辑器打开 /etc/selinux/config 文件: 在配置文件中,找到 SELINUX… 的行。将其值更改为以下选项之一: e…...

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)
0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力,它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而,昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…...
蓝牙设备中的UUID
文章目录 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址,相对固定。iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 …...

网络之再谈体系结构
大家都知道的是网络的体系结构,现代软件常用的体系结构无非是TCP/IP协议栈,OSI因为实现复杂并且效率没有TCP/IP协议栈好,所以不用OSI,但是,最近在复习网络知识的时候,发现了一些奇怪的地方,那就…...
在flutter initState 方法,触发 setState导致循环执行
在Flutter中,如果你在initState中调用了一个方法,并且这个方法可能导致状态更新,这可能会引起无限循环,因为每次状态更新都会再次调用initState。 为了避免这种情况,你应该检查调用的方法是否会导致状态更新ÿ…...
JavaScript字符串方法
charAt() 方法:返回指定索引处的字符。 示例: let str "Hello World"; console.log(str.charAt(0)); // Output: "H" console.log(str.charAt(6)); // Output: "W"charCodeAt() 方法:返回指定索引处字符的 Un…...
YD/T 2698-2014 《电信网和互联网安全防护基线配置要求及检测要求 网络设备》标准介绍
编写背景 随着互联网技术的飞速发展,网络设备的安全问题日益凸显。为了加强电信网和互联网的安全防护,保障网络环境的稳定和用户信息的安全,YD/T 2698-2014标准应运而生。此标准旨在为网络设备提供一套基线配置要求,以及相应的安…...
QCC30XX如何查找本地地址码
查找本地地址段/********************************************************************** Copyright (c) 2016 - 2017 Qualcomm Technologies International, Ltd. FILE NAME sink_private_data.c DESCRIPTION This module works as a container for all private and common…...

基于 DCT 的图像滤波
需求分析 对于图像去噪这一需求,我们可以通过DCT(离散余弦变换)算法来实现。DCT是一种基于频域的变换技术,可以将图像从空间域转换为频域,然后通过滤波等处理方式进行去噪。 针对这一需求,我们需要进行以下…...
spdlog日志库源码:自定义异常类spdlog_ex
自定义异常类spdlog_ex 标准库异常类(std::exception)系列,能满足大多数使用异常的场景,但对系统调用异常及错误信息缺乏支持。spdlog通过继承std::exception,扩展对系统调用的支持,实现自定义异常类spdlo…...
3.每日LeetCode-数组类,爬楼梯(Go,Java,Python)
目录 题目 解法 Go Java Python 代码地址:leetcode: 每日leetcode刷题 题目 题号70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入ÿ…...
单节点11.2.0.3参数文件恢复到RAC11.2.0.4启动失败
问题描述 通过pfile生成spfile失败,提示DATA磁盘不存在 SQL> create spfileDATA/DXJ/spfiledxj.ora from pfile/home/oracle/initdxj20240529.ora; create spfileDATA/DXJ/spfiledxj.ora from pfile/home/oracle/initdxj20240529.ora * ERROR at line 1: ORA-1…...

Windows电脑高颜值桌面便利贴,便签怎么设置
在这个看颜值的时代,我们不仅在衣着打扮上追求时尚与美观,就连电脑桌面也不愿放过。一张唯美的壁纸,几款别致的小工具,总能让我们的工作空间焕发出不一样的光彩。如果你也热衷于打造高颜值的电脑桌面,那么,…...
代码随想录35期Day54-Java
Day54题目 LeetCode392判断子序列 核心思想:公共子序列长度达到需要判断的字符串的长度,说明是子序列 class Solution {public boolean isSubsequence(String s, String t) {if("".equals(s)) return true;int[][] dp new int[s.length()1][t.length()1];for(int…...
Ubuntu使用sudo命令
在Ubuntu系统中,使用管理员权限通常涉及到使用sudo命令。这是因为Ubuntu默认情况下不直接允许root用户登录,而是通过sudo命令来执行需要管理员权限的任务。以下是一些常见的使用管理员权限的方法: 1. 使用sudo命令 运行单个命令 如果只需要…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
StarRocks 全面向量化执行引擎深度解析
StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀” 在JavaScript中,我们经常需要处理文本、数组、对象等数据类型。但当我们需要处理文件上传、图像处理、网络通信等场景时,单纯依赖字符串或数组就显得力不从心了。这时ÿ…...
ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...
Docker环境下安装 Elasticsearch + IK 分词器 + Pinyin插件 + Kibana(适配7.10.1)
做RAG自己打算使用esmilvus自己开发一个,安装时好像网上没有比较新的安装方法,然后找了个旧的方法对应试试: 🚀 本文将手把手教你在 Docker 环境中部署 Elasticsearch 7.10.1 IK分词器 拼音插件 Kibana,适配中文搜索…...

安宝特案例丨寻医不再长途跋涉?Vuzix再次以AR技术智能驱动远程医疗
加拿大领先科技公司TeleVU基于Vuzix智能眼镜打造远程医疗生态系统,彻底革新患者护理模式。 安宝特合作伙伴TeleVU成立30余年,沉淀医疗技术、计算机科学与人工智能经验,聚焦医疗保健领域,提供AR、AI、IoT解决方案。 该方案使医疗…...