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命令 运行单个命令 如果只需要…...
SEO和PPC广告之间的关系是什么_如何通过定期分析优化网站的SEO表现
SEO和PPC广告之间的关系是什么_如何通过定期分析优化网站的SEO表现 在当今的数字营销环境中,网站的SEO(搜索引擎优化)和PPC(负责付费广告)广告是两种重要的推广工具。了解它们之间的关系,并通过定期分析优…...
CPython AOT编译器模块全图谱,从_pycompile.c到aot_codegen.cc的17个关键函数逐行注释与性能拐点分析
第一章:CPython AOT编译器模块全图谱概览与演进脉络CPython 的 Ahead-of-Time(AOT)编译能力并非原生内建,而是近年来通过社区驱动的实验性项目逐步构建起模块化支撑体系。其核心演进路径始于 PEP 698 提出的字节码预编译增强机制&…...
绝地求生游戏辅助工具:罗技鼠标宏自动化配置指南
绝地求生游戏辅助工具:罗技鼠标宏自动化配置指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》这款高强度的战术竞技…...
OpenClaw对接Qwen3-4B实战:5步完成本地模型调用与自动化任务
OpenClaw对接Qwen3-4B实战:5步完成本地模型调用与自动化任务 1. 为什么选择OpenClawQwen3-4B组合 去年冬天第一次听说OpenClaw时,我正被重复性的文件整理工作折磨得焦头烂额。作为一个习惯用脚本解决问题的开发者,我试过各种自动化工具&…...
板对板排针连接器对电子设计有哪些影响
在电子设计领域,哪怕是看着不起眼的小元件,也能起到关键作用,板对板排针连接器就是这样的存在。别看它体积小巧,却是电子设备里的核心连接部件,能让印刷电路板(PCB)之间实现无缝对接,…...
3D元器件库在PCB设计中的关键作用与应用
1. 为什么你需要一套完整的3D元器件库作为一名电子工程师,我深知在PCB设计过程中,3D元器件库的重要性。传统的2D设计虽然能满足基本需求,但在实际生产装配时往往会遇到各种意想不到的机械干涉问题。记得我刚开始做硬件设计时,就曾…...
GLM-4.1V-9B-Base实战教程:跨境电商A+页面图像卖点自动提炼
GLM-4.1V-9B-Base实战教程:跨境电商A页面图像卖点自动提炼 1. 为什么需要自动提炼图像卖点 跨境电商卖家每天需要处理大量商品图片,传统人工标注方式存在三个痛点: 效率低下:一个运营人员每天最多处理50-100张图片成本高昂&…...
连续“罢工“后编码风格突变!释放多个Agent相关岗位,DeepSeek大招来了?
文章目录前言编码风格突变,像换了个脑回路疯狂招兵买马,一口气放出17个Agent岗位Vibe Coding是个啥?给大脑装上灵活的"手脚"DeepSeek到底在憋什么大招?写在最后前言 你有没有试过,正在跟AI聊得火热…...
Polars 2.0插件生态爆发(2024唯一官方认证清洗套件清单)
第一章:Polars 2.0插件生态爆发(2024唯一官方认证清洗套件清单) 随着 Polars 2.0 的正式发布,其插件系统完成重大重构,首次开放官方插件注册与签名认证机制。截至 2024 年第三季度,Polars 核心团队已通过 …...
从Simulink模型到神经网络:一个完整的数据驱动建模与验证实践
1. 为什么需要从Simulink模型转向神经网络? 在控制系统工程领域,Simulink模型一直是建模和仿真的黄金标准。但最近几年,越来越多的工程师开始尝试用神经网络来替代传统模型。这背后有几个关键原因: 首先,传统物理模型在…...
