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

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.信号/槽编辑器 发送者&#xff1a;控件 信号&#xff1a;是控件发出的信号 接受者&#xff1a;包含控件的容器 槽&#xff1a;程序上用slot标识的方法 2.Q_OBJECT宏 只有继承了QObject类的类&#xff0c;才具有信号槽的能力。所以&#xff0c;为了使用…...

【wiki知识库】03.前后端的初步交互(展现所有的电子书)

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 目录 一、&#x1f525;今日目标 二、&#x1f4c2;前端配置文件补充 三、&#x1f30f;前端Vue的改造 四、&#x1f4a1;总结 一、&#x1f525;今日目标 在上一篇文章当中&#xff0c;我已带大家把后端的一些基本工…...

AOP——学习

AOP&#xff08;面向切面编程&#xff09;是Spring框架的重要特性之一&#xff0c;用于分离关注点并处理横切关注点&#xff0c;如日志记录、安全性和事务管理。在面试中&#xff0c;AOP相关的问题通常会涉及基本概念、应用场景、实际使用、以及与其他编程范式的比较。以下是一…...

Linux静态库、共享动态库介绍、制作及使用

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

【Paddle】稀疏计算的使用指南 稀疏ResNet的学习心得 (2) + Paddle3D应用实例稀疏 ResNet代码解读 (1.6w字超详细)

【Paddle】稀疏计算的使用指南 & 稀疏ResNet的学习心得 Paddle3D应用实例稀疏 ResNet代码解读 写在最前面一、稀疏格式简介1. COO&#xff08;Coordinate Format&#xff09;2. CSR&#xff08;Compressed Sparse Row Format&#xff09; 二、Paddle稀疏张量支持1. 创建 C…...

Linux系统维护

1. 批量安装部署 2. 初始化配置 3. 禁用Selinux 永久更改 SELinux 配置&#xff1a; 编辑 SELinux 配置文件&#xff1a;使用文本编辑器打开 /etc/selinux/config 文件&#xff1a; 在配置文件中&#xff0c;找到 SELINUX… 的行。将其值更改为以下选项之一&#xff1a; e…...

经典文献阅读之--RenderOcc(使用2D标签训练多视图3D Occupancy模型)

0. 简介 3D占据预测在机器人感知和自动驾驶领域具有重要的潜力&#xff0c;它将3D场景量化为带有语义标签的网格单元。最近的研究主要利用3D体素空间中的完整占据标签进行监督。然而&#xff0c;昂贵的注释过程和有时模糊的标签严重限制了3D占据模型的可用性和可扩展性。为了解…...

蓝牙设备中的UUID

文章目录 一、Device UUID二、Service UUID 一、Device UUID Device UUID也可以被称作为DeviceID。 Android 设备上扫描获取到的 deviceId 为外围设备的 MAC 地址&#xff0c;相对固定。iOS 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 …...

网络之再谈体系结构

大家都知道的是网络的体系结构&#xff0c;现代软件常用的体系结构无非是TCP/IP协议栈&#xff0c;OSI因为实现复杂并且效率没有TCP/IP协议栈好&#xff0c;所以不用OSI&#xff0c;但是&#xff0c;最近在复习网络知识的时候&#xff0c;发现了一些奇怪的地方&#xff0c;那就…...

在flutter initState 方法,触发 setState导致循环执行

在Flutter中&#xff0c;如果你在initState中调用了一个方法&#xff0c;并且这个方法可能导致状态更新&#xff0c;这可能会引起无限循环&#xff0c;因为每次状态更新都会再次调用initState。 为了避免这种情况&#xff0c;你应该检查调用的方法是否会导致状态更新&#xff…...

JavaScript字符串方法

charAt() 方法&#xff1a;返回指定索引处的字符。 示例&#xff1a; let str "Hello World"; console.log(str.charAt(0)); // Output: "H" console.log(str.charAt(6)); // Output: "W"charCodeAt() 方法&#xff1a;返回指定索引处字符的 Un…...

YD/T 2698-2014 《电信网和互联网安全防护基线配置要求及检测要求 网络设备》标准介绍

编写背景 随着互联网技术的飞速发展&#xff0c;网络设备的安全问题日益凸显。为了加强电信网和互联网的安全防护&#xff0c;保障网络环境的稳定和用户信息的安全&#xff0c;YD/T 2698-2014标准应运而生。此标准旨在为网络设备提供一套基线配置要求&#xff0c;以及相应的安…...

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 的图像滤波

需求分析 对于图像去噪这一需求&#xff0c;我们可以通过DCT&#xff08;离散余弦变换&#xff09;算法来实现。DCT是一种基于频域的变换技术&#xff0c;可以将图像从空间域转换为频域&#xff0c;然后通过滤波等处理方式进行去噪。 针对这一需求&#xff0c;我们需要进行以下…...

spdlog日志库源码:自定义异常类spdlog_ex

自定义异常类spdlog_ex 标准库异常类&#xff08;std::exception&#xff09;系列&#xff0c;能满足大多数使用异常的场景&#xff0c;但对系统调用异常及错误信息缺乏支持。spdlog通过继承std::exception&#xff0c;扩展对系统调用的支持&#xff0c;实现自定义异常类spdlo…...

3.每日LeetCode-数组类,爬楼梯(Go,Java,Python)

目录 题目 解法 Go Java Python 代码地址&#xff1a;leetcode: 每日leetcode刷题 题目 题号70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff…...

单节点11.2.0.3参数文件恢复到RAC11.2.0.4启动失败

问题描述 通过pfile生成spfile失败&#xff0c;提示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电脑高颜值桌面便利贴,便签怎么设置

在这个看颜值的时代&#xff0c;我们不仅在衣着打扮上追求时尚与美观&#xff0c;就连电脑桌面也不愿放过。一张唯美的壁纸&#xff0c;几款别致的小工具&#xff0c;总能让我们的工作空间焕发出不一样的光彩。如果你也热衷于打造高颜值的电脑桌面&#xff0c;那么&#xff0c;…...

代码随想录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系统中&#xff0c;使用管理员权限通常涉及到使用sudo命令。这是因为Ubuntu默认情况下不直接允许root用户登录&#xff0c;而是通过sudo命令来执行需要管理员权限的任务。以下是一些常见的使用管理员权限的方法&#xff1a; 1. 使用sudo命令 运行单个命令 如果只需要…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...