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命令 运行单个命令 如果只需要…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
