【QT】常用类
欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:QT
目录
- 👉🏻QMediaPlayer
- 👉🏻QMediaPlaylist
- setPlaybackMode
- 👉🏻QDir
- 👉🏻QFileDialog
- 👉🏻QList
- 👉🏻QUrl
- 👉🏻QNetworkAccessManager
- 👉🏻QNetworkRequest、QNetworkReply
👉🏻QMediaPlayer
🍎 基本功能
QMediaPlayer
是 Qt 框架中的一个类,用于处理音频和视频的播放。它提供了以下基本功能:
- 播放音频和视频:能够播放各种格式的音频和视频文件。
- 控制播放:支持播放、暂停、停止、快进、快退等控制功能。
- 媒体信息获取:可以获取播放媒体的时长、当前播放位置等信息。
- 音量和播放速度控制:能够设置音量和播放速度。
- 播放状态监控:能够响应播放状态的变化,如播放完成、错误发生等。
🍎 常用方法
以下是 QMediaPlayer
的一些常用方法及其功能:
play()
:开始播放媒体。pause()
:暂停播放。stop()
:停止播放。setMedia(const QMediaContent &media)
:设置要播放的媒体内容。setVolume(int volume)
:设置音量(范围从 0 到 100)。setPlaybackRate(qreal rate)
:设置播放速度(如 1.0 为正常速度,0.5 为半速,2.0 为双倍速)。currentMedia()
:获取当前播放的媒体内容。state()
:获取当前播放状态(如播放中、暂停中、停止中)。duration()
:获取媒体的总时长(以毫秒为单位)。position()
:获取当前播放位置(以毫秒为单位)。setPosition(qint64 position)
:设置播放位置(以毫秒为单位)。
🍎 示例代码
下面是一个简单的示例,展示了如何使用 QMediaPlayer
播放一个音频文件:
#include <QCoreApplication>
#include <QMediaPlayer>
#include <QMediaContent>
#include <QUrl>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);// 创建 QMediaPlayer 实例QMediaPlayer *player = new QMediaPlayer();// 设置媒体内容(音频文件路径)QMediaContent media(QUrl::fromLocalFile("/path/to/your/audiofile.mp3"));player->setMedia(media);// 设置音量(范围:0 到 100)player->setVolume(50);// 开始播放音频player->play();// 运行应用程序return a.exec();
}
🍎 进阶用法示例
下面是一个更复杂的示例,展示了如何设置播放速度、控制播放位置以及响应播放状态变化:
#include <QCoreApplication>
#include <QMediaPlayer>
#include <QMediaContent>
#include <QUrl>
#include <QTimer>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QMediaPlayer *player = new QMediaPlayer();// 设置媒体内容(音频文件路径)QMediaContent media(QUrl::fromLocalFile("/path/to/your/audiofile.mp3"));player->setMedia(media);// 设置音量player->setVolume(70);// 设置播放速度player->setPlaybackRate(1.5); // 1.5 倍速播放// 开始播放player->play();// 设置定时器用于检查播放状态QTimer *timer = new QTimer();QObject::connect(timer, &QTimer::timeout, [player]() {qDebug() << "Current position:" << player->position();if (player->state() == QMediaPlayer::StoppedState) {qDebug() << "Playback stopped.";}});timer->start(1000); // 每秒检查一次return a.exec();
}
这个示例不仅展示了如何设置播放速度,还使用了定时器来检查播放位置和播放状态。
🍎 注意事项
- 依赖模块:确保你的 Qt 项目包含了
Qt Multimedia
模块,并在CMakeLists.txt
或.pro
文件中进行了正确配置。 - 平台支持:不同平台对多媒体格式的支持可能有所不同,确保检查 Qt 文档以了解支持的格式和功能。
- 错误处理:在实际应用中,考虑添加更多的错误处理代码,以提高用户体验和应用的稳定性。
👉🏻QMediaPlaylist
QMediaPlaylist
用于管理和控制多个媒体文件的播放顺序。以下是一些主要功能和常用方法:
基本功能
- 管理媒体条目:添加、移除和操作播放列表中的媒体条目。
- 控制播放顺序:设置播放模式,如顺序播放、随机播放或循环播放。
- 获取播放信息:访问播放列表中的当前媒体和播放位置。
常用方法
addMedia(const QMediaContent &content)
:将媒体文件添加到播放列表。removeMedia(int index)
:从播放列表中移除指定位置的媒体文件。clear()
:清空播放列表。setCurrentIndex(int index)
:设置当前播放的媒体条目索引。next()
和previous()
:切换到下一个或上一个媒体条目。setPlaybackMode(QMediaPlaylist::PlaybackMode mode)
:设置播放模式,如Sequential
,Loop
,Random
等。currentIndex()
:获取当前播放的媒体条目索引。mediaCount()
:获取播放列表中的媒体条目数量。
示例代码
下面的示例展示了如何使用 QMediaPlaylist
来创建一个播放列表并管理其内容:
#include <QCoreApplication>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QMediaContent>
#include <QUrl>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QMediaPlayer *player = new QMediaPlayer();QMediaPlaylist *playlist = new QMediaPlaylist();// 添加媒体到播放列表playlist->addMedia(QMediaContent(QUrl::fromLocalFile("/path/to/audio1.mp3")));playlist->addMedia(QMediaContent(QUrl::fromLocalFile("/path/to/audio2.mp3")));playlist->addMedia(QMediaContent(QUrl::fromLocalFile("/path/to/audio3.mp3")));// 设置播放模式为随机playlist->setPlaybackMode(QMediaPlaylist::Random);// 设置当前播放的索引playlist->setCurrentIndex(0);// 将播放列表设置给播放器player->setPlaylist(playlist);// 开始播放player->play();return a.exec();
}
在这个示例中,我们创建了一个 QMediaPlaylist
对象,添加了几个媒体文件,设置了播放模式为随机,然后将其分配给 QMediaPlayer
进行播放。你可以根据需要调整播放模式和操作播放列表。
setPlaybackMode
-
QMediaPlaylist::Sequential
:这是播放模式的一种,意味着播放列表中的媒体将按照它们在列表中的顺序依次播放。当当前媒体播放完毕时,播放器将自动开始播放列表中的下一个媒体,直到播放列表结束。如果播放列表中的所有媒体都播放完毕,播放器将停在最后一个媒体。 -
其他播放模式:
QMediaPlaylist::Loop
:播放列表中的媒体将重复播放。播放完列表中的所有媒体后,播放器将重新从列表的开头开始播放。QMediaPlaylist::CurrentItemInLoop
:当前播放的媒体将被重复播放。播放列表中的其他媒体不会自动播放,直到手动更改。QMediaPlaylist::Random
:媒体将在列表中以随机顺序播放。每次播放列表中的媒体顺序都是随机的。
👉🏻QDir
QDir
是 Qt 提供的一个类,用于简化文件和目录的操作。以下是一些常见用法:
-
列出目录内容:
QDir dir("/path/to/directory"); QStringList files = dir.entryList(QDir::Files);
-
获取文件信息:
QFileInfo fileInfo("/path/to/file"); QString fileName = fileInfo.fileName(); qint64 fileSize = fileInfo.size();
-
创建目录:
QDir dir; if (!dir.exists("/path/to/new/directory")) {dir.mkpath("/path/to/new/directory"); }
-
删除目录:
QDir dir("/path/to/directory"); dir.removeRecursively();
-
重命名文件:
QDir dir("/path/to/directory"); dir.rename("oldName.txt", "newName.txt");
QDir
提供了丰富的功能来管理文件和目录,使文件系统操作更方便。
👉🏻QFileDialog
QFileDialog
是 Qt 提供的一个对话框类,用于让用户选择文件或目录。它支持多种模式和配置选项,可以用于打开、保存、选择目录等操作。以下是一些常见的用法示例:
基本用法
-
打开文件对话框
#include <QFileDialog> #include <QWidget>QString openFile(QWidget *parent) {QString fileName = QFileDialog::getOpenFileName(parent, "Open File", "", "Files (*.*);;Text Files (*.txt);;Images (*.png *.jpg)");return fileName; }
parent
:对话框的父窗口。"Open File"
:对话框的标题。""
:默认目录路径。"Files (*.*);;Text Files (*.txt);;Images (*.png *.jpg)"
:文件过滤器,用于筛选可见文件类型。
-
保存文件对话框
#include <QFileDialog> #include <QWidget>QString saveFile(QWidget *parent) {QString fileName = QFileDialog::getSaveFileName(parent, "Save File", "", "Text Files (*.txt);;Images (*.png *.jpg)");return fileName; }
parent
:对话框的父窗口。"Save File"
:对话框的标题。""
:默认文件路径和名称。"Text Files (*.txt);;Images (*.png *.jpg)"
:文件过滤器。
-
选择目录对话框
#include <QFileDialog> #include <QWidget>QString selectDirectory(QWidget *parent) {QString directory = QFileDialog::getExistingDirectory(parent, "Select Directory", "");return directory; }
parent
:对话框的父窗口。"Select Directory"
:对话框的标题。""
:默认目录路径。
高级用法
-
设置对话框选项
QFileDialog dialog(parent); dialog.setFileMode(QFileDialog::ExistingFiles); // 允许选择多个文件 dialog.setNameFilters(QStringList() << "Images (*.png *.jpg)" << "Text Files (*.txt)"); dialog.setViewMode(QFileDialog::List); // 以列表模式显示文件
-
响应用户选择
QFileDialog dialog(parent); dialog.setFileMode(QFileDialog::ExistingFiles); if (dialog.exec()) {QStringList selectedFiles = dialog.selectedFiles();// 处理选择的文件for (const QString &file : selectedFiles) {qDebug() << file;} }
dialog.exec()
:显示对话框并等待用户操作。dialog.selectedFiles()
:返回用户选择的文件列表(如果选择的是多个文件)。
👉🏻QList
QList
是 Qt 框架中的一个模板类,用于存储和管理一组同类型的对象。它类似于标准 C++ 的 std::vector
或 std::list
,但提供了更多的功能和便利性来处理 Qt 类型的数据。QList
提供了对动态数组的支持,并且可以存储任意类型的对象,只要这些对象是可拷贝的或可移动的。
基本用法
-
创建和初始化
QList
#include <QList> #include <QString>QList<QString> stringList; // 创建一个空的 QList 对象
你可以通过初始化列表或
append()
方法来初始化列表:QList<int> numberList = {1, 2, 3, 4, 5}; // 使用初始化列表
-
添加和插入元素
QList<QString> stringList; stringList.append("Hello"); // 在末尾添加元素 stringList.prepend("World"); // 在开头添加元素 stringList.insert(1, "Qt"); // 在指定位置插入元素
-
访问和修改元素
QString firstItem = stringList.at(0); // 获取第一个元素 stringList[1] = "Changed"; // 修改第二个元素
at(index)
:返回指定索引位置的元素。operator[]
:使用下标操作符访问元素(不检查边界)。
-
遍历
QList
for (const QString &str : stringList) {qDebug() << str; }
或使用迭代器:
for (QList<QString>::const_iterator it = stringList.constBegin(); it != stringList.constEnd(); ++it) {qDebug() << *it; }
-
删除元素
stringList.removeAt(1); // 删除指定位置的元素 stringList.removeOne("Qt"); // 删除第一个匹配的元素 stringList.clear(); // 删除所有元素
removeAt(index)
:删除指定索引位置的元素。removeOne(value)
:删除第一个匹配的元素。clear()
:清空所有元素。
特性
- 动态大小:
QList
是一个动态数组,可以自动调整大小以适应添加或删除的元素。 - 支持值类型和指针类型:可以存储任意类型的对象,包括 Qt 自带的类型和用户自定义的类型(需要拷贝构造函数和赋值运算符正常工作)。
- 内存管理:对于存储指针类型的
QList
,需要用户负责对象的内存管理。
👉🏻QUrl
QUrl
是 Qt 框架中的一个类,用于处理和操作 URL(统一资源定位符)。它提供了一种简单的方式来解析、构建和修改 URL,并支持处理常见的 URL 组件,如协议、主机、路径和查询参数。
基本用法
-
创建和解析 URL
#include <QUrl> #include <QDebug>QUrl url("https://www.example.com:8080/path/to/resource?query=1#fragment");
QUrl
会自动解析 URL 并将其拆分为各个部分。 -
访问和修改 URL 组件
qDebug() << "Scheme:" << url.scheme(); // https qDebug() << "Host:" << url.host(); // www.example.com qDebug() << "Port:" << url.port(); // 8080 qDebug() << "Path:" << url.path(); // /path/to/resource qDebug() << "Query:" << url.query(); // query=1 qDebug() << "Fragment:" << url.fragment(); // fragmenturl.setPath("/new/path"); // 修改路径
-
构建 URL
QUrl newUrl; newUrl.setScheme("http"); newUrl.setHost("example.com"); newUrl.setPath("/path"); newUrl.setQuery("param=value");qDebug() << newUrl.toString(); // http://example.com/path?param=value
-
处理 URL 编码
QString encoded = QUrl::toPercentEncoding("This is a test!"); QString decoded = QUrl::fromPercentEncoding(encoded.toUtf8());
QUrl::toPercentEncoding()
:对字符串进行百分号编码。QUrl::fromPercentEncoding()
:对百分号编码的字符串进行解码。
特性
- 支持 URL 解析和构建:可以轻松地解析和构建 URL 的各个部分。
- 支持 URL 编码:处理 URL 编码和解码。
- 处理相对 URL:可以处理相对 URL 和基于基础 URL 的解析。
示例代码
#include <QCoreApplication>
#include <QUrl>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QUrl url("https://www.example.com:8080/path/to/resource?query=1#fragment");qDebug() << "Original URL:" << url.toString();qDebug() << "Host:" << url.host();qDebug() << "Port:" << url.port();url.setPath("/new/path");url.setQuery("param=value");qDebug() << "Modified URL:" << url.toString();return a.exec();
}
QUrl
提供了一种强大的方式来处理 URL,在 Qt 应用程序中,它非常有用,特别是当涉及到网络操作时。
👉🏻QNetworkAccessManager
QNetworkAccessManager
是 Qt 框架中用于处理网络请求的类。以下是其基本用法:
- 创建
QNetworkAccessManager
实例
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
- 发起网络请求
使用 QNetworkAccessManager
发起请求,可以是 GET、POST、PUT 等。以下示例演示如何发起 GET 请求:
QNetworkRequest request(QUrl("https://example.com"));
QNetworkReply *reply = manager->get(request);
- 处理请求结果
连接 QNetworkReply
的信号与槽来处理请求结果:
connect(reply, &QNetworkReply::finished, [=]() {if (reply->error() == QNetworkReply::NoError) {QByteArray responseData = reply->readAll();// 处理响应数据} else {// 处理错误qDebug() << "Error:" << reply->errorString();}reply->deleteLater();
});
- 发起 POST 请求
示例代码展示如何发起 POST 请求,并发送数据:
QNetworkRequest request(QUrl("https://example.com/submit"));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");QByteArray postData;
postData.append("key1=value1&key2=value2");QNetworkReply *reply = manager->post(request, postData);
- 取消请求
你可以通过 QNetworkReply
对象取消请求:
reply->abort();
- 管理 SSL 证书(可选)
如果需要自定义 SSL 证书处理,可以使用 QNetworkAccessManager
的 SSL 配置功能:
connect(manager, &QNetworkAccessManager::sslErrors, [](QNetworkReply* reply, const QList<QSslError>& errors) {// 处理 SSL 错误reply->ignoreSslErrors();
});
以上是 QNetworkAccessManager
的基本用法,能够满足大多数网络请求的需求。
👉🏻QNetworkRequest、QNetworkReply
QNetworkRequest
QNetworkRequest
用于定义网络请求的配置,包括 URL、请求头和 SSL 配置等。
-
创建请求:
QNetworkRequest request(QUrl("https://example.com"));
-
设置请求头:
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
-
设置 SSL 配置(可选):
QSslConfiguration sslConfig = QSslConfiguration::defaultConfiguration(); request.setSslConfiguration(sslConfig);
QNetworkReply
QNetworkReply
用于处理网络请求的响应,包括获取数据、处理错误等。
-
获取数据:
QByteArray responseData = reply->readAll();
-
处理错误:
if (reply->error() != QNetworkReply::NoError) {qDebug() << "Error:" << reply->errorString(); }
-
连接信号与槽:
connect(reply, &QNetworkReply::finished, [=]() {if (reply->error() == QNetworkReply::NoError) {QByteArray responseData = reply->readAll();// 处理响应数据} else {qDebug() << "Error:" << reply->errorString();}reply->deleteLater(); });
-
取消请求:
reply->abort();
总结:QNetworkRequest
配置请求,QNetworkReply
处理响应。
相关文章:

【QT】常用类
欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:QT 目录 👉🏻QMediaPlayer👉🏻QMediaPlaylistsetPlaybackMode 👉🏻QDir👉…...

从index_put出发全面学习cuda和pytorch技术
一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…...

浅谈住房城乡建设部科技创新平台布局重点方向
最近住房建设部组织开展住房城乡建设部科技创新平台(以下简称部科技创新平台)申报工作。详细内容见住房城乡建设部科技创新平台开始申报了 (qq.com)。在这里有4大方向共15个课题。内容见下图: 虽然我是做技术的,但是如何体现创新还…...
调用 write()函数后,如何知道数据是否已经写入磁盘?
在 Linux 中调用 write() 函数后,可以通过以下几种方式来确定数据是否已经写入磁盘: 一、使用同步函数 1. fsync() 函数: - 这个函数会强制将与文件描述符相关的所有修改过的内核缓冲区写入磁盘,并等待直到磁盘 I/O 操作完…...

策略路由与路由策略的区别
🐣个人主页 可惜已不在 🐤这篇在这个专栏 华为_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 一、主体不同 二、方式不同 三、规则不同 四、定义和基本概念 一、主体不同 1、路由策略:是为了改…...
从底层原理上理解ClickHouse 中的稀疏索引
稀疏索引(Sparse Indexes)是 ClickHouse 中一个重要的加速查询机制。与传统数据库使用的 B-Tree 或哈希索引不同,ClickHouse 的稀疏索引并不是为每一行数据构建索引,而是为数据存储的块或部分数据生成索引。这种索引的核心思想是通…...
xtu oj 锐角三角形
锐角三角形 题目描述 n条边,任选3条边,能组成多少个锐角三角形(选的边不同就认为是不同的三角形)? 输入 第一个是一个整数T(1≤T≤1000),表示样例的个数。 每个样例占2行,第一行是一…...

MATLAB系列04:循环结构
MATLAB系列04:循环结构 4. 循环结构4.1 while循环4.2 for循环4.2.1 运算的细节4.2.2 break语句和continue语句4.2.3 嵌套循环 4.3 逻辑数组和向量化4.3.1 逻辑数组的重要性4.3.2 用 if/else 结构和逻辑数组创建等式 4.4 总结 4. 循环结构 循环(loop)是一种 MATLAB …...

虹科方案 | 精准零部件测试!多路汽车开关按键功能检测系统
欢迎关注虹科,为您提供最新资讯! #LIN/CAN总线 #零部件测试 #CAN数据 导读 在汽车制造业中,零部件的安全性、功能性和可靠性是确保车辆整体性能的关键。虹科针对车辆零部件的LIN/CAN总线仿真测试,提出了基于虹科Baby-LIN系列产…...
【加密算法基础——AES CBC模式代码解密实践】
AES 解密实践之代码实现 AES 解密使用python脚本比较灵活,但是一定要保证脚本是调试过的,才能在找到正确的密文,密钥,初始向量的情况下,解出正确的明文。但是对于AES解密,命令行无法处理key截断的问题。 实…...

【ViT+Dis】Deepfake Detection Scheme Based on Vision Transformer and Distillation
文章目录 Deepfake Detection Scheme Based on Vision Transformer and Distillationkey points深伪检测检测算法蒸馏法与教师网络实验训练:参数总结Deepfake Detection Scheme Based on Vision Transformer and Distillation 会议:2021 作者: key points 以往基于CNN结…...

maya-vray渲染蒙版
要用一个叫vrayMulWrapper的材质球,把alpha Conterbution调到-1,勾选matte surface启用蒙版物体。...

计网简简单单复习一下
文章目录 基础体系结构(分层模型)为什么要分层?OSI 七层模型?每一层的作用?TCP/IP 四层模型是什么?每一层的作用是什么?五层体系结构以及对应的协议每一层常见协议有哪些?从输入 URL 到页面展示到底发生了什么?URI和URL的区别;forward和redirect的区别DNS作用是什么?D…...

PyQt5-loading-圆环加载效果
效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…...

RabbitMQ Spring客户端使用
注解声明式队列和交换机 java自带序列化工具类,将java对象序列化为字节数组,用于网络传输。 jdk序列号存在缺陷,(不安全,占用空间大等) 推荐使用JSON的序列化: springboot扫描包使配置生效&…...

Arduino IDE离线配置第三方库文件-ESP32开发板
简洁版可以使用uget等,将文件下载到对应文件夹下,然后安装。 esp32之arduino配置下载提速 录屏 Arduino IDE离线配置第三方库文件ESP32 资源 Linux https://download.csdn.net/download/ZhangRelay/89749063 第三方开发板 非默认支持的开发板 linu…...

Node.js 安装及项目实践
node.js安装 node安装,选择版本 一直next,或者自己修改路径,添加两个包 选择自己的安装的node的路径,cmd或者winr cmd 显示node与npm的版本号 node -vnpm -v可以跟着这个博客将node安装 2024最新版Node.js下载安装及环境配…...
如何从混合信号中剔除某一信号——Schmidt正交化的使用(信号互相关)
本文仅用作方法记录,不讲详细原理和底层逻辑。 在面对混合的接收信号的情况下,例如接收信号: Y a 1 X 1 a 2 X 2 a 3 X 3 N Ya_1X_1a_2X_2a_3X_3N Ya1X1a2X2a3X3N 假设信号 X 1 X_1 X1、 X 2 X_2 X2、 X 3 X_3 X3在时域和频域上…...

I2C/IIC学习笔记
I2C/IIC 有些同学I2C和IIC分不清,I2C和IIC实际上是指同一种通信协议。I2C是Inter-Integrated Circuit的缩写,而IIC是它的另一种表述方式,代表的是同一个意思,即“集成电路间总线”。I2C是一种由飞利浦公司(现恩智浦半…...

Servlet学习详解--基本涵盖所有Servlet知识点
目录 一、Servlet二、 Servlet入门2.1. 执行原理2.2. 实现Servlet接口重写其五个方法及其生命周期 三、Request请求对象3.1. 获取请求消息数据3.2. 获取请求头数据3.3. 获取请求体数据3.4. 设置编码3.5. 其他通用功能3.6. 请求转发(Forward)3.7. 转发共享数据 四、Response对象…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...