Qt文件和目录相关操作
1.相关说明
QCoreApplication类、QFile类、QDir、QTemporaryDir类、QTemporaryFile类、QFileSystemWatcher类的相关函数
2.相关界面

3.相关代码
#include "dialog.h"
#include "ui_dialog.h"
#include <QFileDialog>
#include <QTemporaryDir>
#include <QTemporaryFile>
#include <QFileSystemWatcher>Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui->setupUi(this);fileWatcher = NULL;
}Dialog::~Dialog()
{delete ui;
}// 打开一个文件
void Dialog::on_btnOpenFile_clicked()
{QString curDir = QCoreApplication::applicationDirPath();QString aFile = QFileDialog::getOpenFileName(this, "打开一个文件", curDir, "(*.cpp *.h *.c);;(*.*)");ui->lineEditFile->setText(aFile);
}
// 打开一个目录
void Dialog::on_btnOpenDir_clicked()
{QString curDir = QCoreApplication::applicationDirPath();QString aDir = QFileDialog::getExistingDirectory(this, "选择一个目录", curDir);ui->lineEditDir->setText(aDir);
}
// 清除文本框
void Dialog::on_btnClear_clicked()
{ui->plainTextEdit->clear();
}void Dialog::showBtnInfo(QObject *btn)
{QPushButton *theBtn = static_cast<QPushButton*>(btn);ui->plainTextEdit->appendPlainText(theBtn->text());ui->plainTextEdit->appendPlainText(theBtn->toolTip()+":");
}// applicationDirPath()
void Dialog::on_btnApplicationDirPath_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::applicationDirPath();ui->plainTextEdit->appendPlainText(str);
}
// applicationFilePath()
void Dialog::on_btnApplicationFilePath_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::applicationFilePath();ui->plainTextEdit->appendPlainText(str);
}
// applicationName()
void Dialog::on_btnApplicationName_clicked()
{showBtnInfo(sender());// QCoreApplication::setApplicationName("My App");QString str = QCoreApplication::applicationName();ui->plainTextEdit->appendPlainText(str);
}
// setApplicationName(QString)
void Dialog::on_btnSetApplicationName_clicked()
{showBtnInfo(sender());QCoreApplication::setApplicationName("My App");QString str = QCoreApplication::applicationName();ui->plainTextEdit->appendPlainText(str);
}
// libraryPaths()
void Dialog::on_btnLibraryPaths_clicked()
{showBtnInfo(sender());QStringList paths = QCoreApplication::libraryPaths();for(auto &path : paths){ui->plainTextEdit->appendPlainText(path);}
}
// organizationName()
void Dialog::on_btnOrganiazationName_clicked()
{showBtnInfo(sender());QCoreApplication::setOrganizationName("My Organization");QString orgName = QCoreApplication::organizationName();ui->plainTextEdit->appendPlainText(orgName);
}
// exit()
void Dialog::on_btnExit_clicked()
{QCoreApplication::exit();
}
// QFile::copy
void Dialog::on_btnQFileCopy_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString newFile = fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();QFile::copy(sourceFile, newFile);ui->plainTextEdit->appendPlainText("源文件:"+sourceFile);ui->plainTextEdit->appendPlainText("副本:"+newFile);
}
// QFile::exists
void Dialog::on_btnQFileExists_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();if(QFile::exists(sourceFile)){ui->plainTextEdit->appendPlainText(sourceFile + ":存在");} else {ui->plainTextEdit->appendPlainText(sourceFile + ":不存在");}}
// QFile::remove
void Dialog::on_btnRemove_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();if(QFile::remove(sourceFile)){ui->plainTextEdit->appendPlainText("remove "+sourceFile+" 成功");} else {ui->plainTextEdit->appendPlainText("remove "+sourceFile+" 失败");}
}
// QFile::rename
void Dialog::on_btnQFileRename_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString newFile = fileInfo.path()+"/"+fileInfo.baseName()+"--新名称."+fileInfo.suffix();if(QFile::rename(sourceFile, newFile)){ui->plainTextEdit->appendPlainText("旧名称:"+sourceFile);ui->plainTextEdit->appendPlainText("新名称:"+newFile);} else {ui->plainTextEdit->appendPlainText("修改 "+sourceFile+" 失败");}
}
// QFile::moveToTrash
void Dialog::on_btnQFileMoveToTrash_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();if(QFile::exists(sourceFile) && QFile::moveToTrash(sourceFile)){ui->plainTextEdit->appendPlainText("删除文件到垃圾箱:"+sourceFile);} else {ui->plainTextEdit->appendPlainText("文件不存在");}
}
// file.copy
void Dialog::on_btnCopy_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString newFile = fileInfo.path()+"/"+fileInfo.baseName()+"--副本."+fileInfo.suffix();QFile file(sourceFile);// QFile::copy(sourceFile, newFile);if(file.copy(newFile)){ui->plainTextEdit->appendPlainText("源文件:"+sourceFile);ui->plainTextEdit->appendPlainText("副本:"+newFile);} else {ui->plainTextEdit->appendPlainText("复制文件失败:"+sourceFile);}}
// file.exists
void Dialog::on_btnExists_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFile file(sourceFile);if(file.exists()){ui->plainTextEdit->appendPlainText(sourceFile + ":存在");} else {ui->plainTextEdit->appendPlainText(sourceFile + ":不存在");}
}
// file.remove
void Dialog::on_btnRemove_2_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFile file(sourceFile);if(file.remove()){ui->plainTextEdit->appendPlainText("remove "+sourceFile+" 成功");} else {ui->plainTextEdit->appendPlainText("remove "+sourceFile+" 失败");}
}
// file.rename
void Dialog::on_btnRename_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString newFile = fileInfo.path()+"/"+fileInfo.baseName()+"--新名称."+fileInfo.suffix();QFile file(sourceFile);if(file.rename(newFile)){ui->plainTextEdit->appendPlainText("旧名称:"+sourceFile);ui->plainTextEdit->appendPlainText("新名称:"+newFile);} else {ui->plainTextEdit->appendPlainText("修改 "+sourceFile+" 失败");}
}
// file.moveToTrash
void Dialog::on_btnMoveToTrash_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFile file(sourceFile);if(file.exists() && file.moveToTrash()){ui->plainTextEdit->appendPlainText("删除文件到垃圾箱:"+sourceFile);} else {ui->plainTextEdit->appendPlainText("文件不存在");}
}
// absoluteFilePath()
void Dialog::on_btnAbsoluteFilePath_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString absfilePath = fileInfo.absoluteFilePath();ui->plainTextEdit->appendPlainText(absfilePath);
}
// absolutePath()
void Dialog::on_btnAbsolutePath_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString absfilePath = fileInfo.absolutePath();ui->plainTextEdit->appendPlainText(absfilePath);
}
// fileInfo.fileName()
void Dialog::on_btnFileName_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString fileName = fileInfo.fileName();ui->plainTextEdit->appendPlainText(fileName);
}
// fileInfo.filePath()
void Dialog::on_btnFilePath_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString filePath = fileInfo.filePath();ui->plainTextEdit->appendPlainText(filePath);
}
// fileInfo.size()
void Dialog::on_btnSize_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString fileSize = QString::number(fileInfo.size());ui->plainTextEdit->appendPlainText(fileSize+"Bytes");
}
// fileInfo.path()
void Dialog::on_btnPath_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString path = fileInfo.path();ui->plainTextEdit->appendPlainText(path);
}
// fileInfo.baseName()
void Dialog::on_btnBaseName_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString baseName = fileInfo.baseName();ui->plainTextEdit->appendPlainText(baseName);
}
// fileInfo.completeBaseName()
void Dialog::on_btnCompleteBaseName_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString completeBaseName = fileInfo.completeBaseName();ui->plainTextEdit->appendPlainText(completeBaseName);
}
// fileInfo.suffix()
void Dialog::on_btnSuffix_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString suffix = fileInfo.suffix();ui->plainTextEdit->appendPlainText(suffix);
}
// fileInfo.completeSuffix()
void Dialog::on_btnCompleteSuffix_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);QString completeSuffix = fileInfo.completeSuffix();ui->plainTextEdit->appendPlainText(completeSuffix);
}
// fileInfo.isDir()
void Dialog::on_btnIsDir_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.isDir()){ui->plainTextEdit->appendPlainText("目录");} else {ui->plainTextEdit->appendPlainText("非目录");}
}
// fileInfo.isFile()
void Dialog::on_btnIsFile_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.isFile()){ui->plainTextEdit->appendPlainText("文件");} else {ui->plainTextEdit->appendPlainText("非文件");}
}
// fileInfo.isExecutable()
void Dialog::on_btnIsExecutable_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.isExecutable()){ui->plainTextEdit->appendPlainText("执行文件");} else {ui->plainTextEdit->appendPlainText("非执行文件");}
}
// fileInfo.birthTime()
void Dialog::on_btnBirthTime_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.exists()){ui->plainTextEdit->appendPlainText("创建时间:"+fileInfo.birthTime().toString("yyyy-MM-dd hh:mm:ss"));}
}
// fileInfo.lastModified()
void Dialog::on_btnLastModified_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.exists()){ui->plainTextEdit->appendPlainText("最后修改时间:"+fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss"));}
}
// fileInfo.lastRead()
void Dialog::on_btnLastRead_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.exists()){ui->plainTextEdit->appendPlainText("最后读取时间:"+fileInfo.lastRead().toString("yyyy-MM-dd hh:mm:ss"));}
}
// QFileInfo::exists(sourceFile)
void Dialog::on_btnStaticExists_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();if(QFileInfo::exists(sourceFile)){ui->plainTextEdit->appendPlainText("文件存在");} else {ui->plainTextEdit->appendPlainText("文件不存在");}
}
// fileInfo.exists()
void Dialog::on_btnDynamicExists_clicked()
{showBtnInfo(sender());QString sourceFile = ui->lineEditFile->text();QFileInfo fileInfo(sourceFile);if(fileInfo.exists()){ui->plainTextEdit->appendPlainText("文件存在");} else {ui->plainTextEdit->appendPlainText("文件不存在");}
}
// QDir::tempPath()
void Dialog::on_btnTempPath_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("tempPath:"+QDir::tempPath());
}
// QDir::rootPath()
void Dialog::on_btnRootPath_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("rootPath:"+QDir::rootPath());
}
// QDir::homePath()
void Dialog::on_btnHomePath_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("homePath:"+QDir::homePath());
}
// QDir::drives()
void Dialog::on_btnDrives_clicked()
{showBtnInfo(sender());QFileInfoList filelist = QDir::drives();for(auto &fileInfo : filelist){ui->plainTextEdit->appendPlainText(fileInfo.path());}
}
// QDir::currentPath()
void Dialog::on_btnCurrentPath_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("currentPath:"+QDir::currentPath());
}// QDir::setCurrent(ui->lineEditDir->text())
void Dialog::on_btnSetCurrent_clicked()
{showBtnInfo(sender());QDir::setCurrent(ui->lineEditDir->text());ui->plainTextEdit->appendPlainText("currentPath:"+QDir::currentPath());
}
// dir.mkdir(subDir)
void Dialog::on_btnMkdir_clicked()
{showBtnInfo(sender());QString subDir = "subdir";QDir dir(ui->lineEditDir->text());if(dir.mkdir(subDir)){ui->plainTextEdit->appendPlainText("创建成功:"+subDir);} else {ui->plainTextEdit->appendPlainText("创建失败:"+subDir);}
}
// dir.rmdir(subDir)
void Dialog::on_btnRmdir_clicked()
{showBtnInfo(sender());QString subDir = "subdir";QDir dir(ui->lineEditDir->text());if(dir.rmdir(subDir)){ui->plainTextEdit->appendPlainText("删除成功:"+subDir);} else {ui->plainTextEdit->appendPlainText("删除失败:"+subDir);}
}
// dir.remove(fileName)
void Dialog::on_btnRemove_3_clicked()
{showBtnInfo(sender());QString fileName = ui->lineEditFile->text();QDir dir(ui->lineEditDir->text());if(dir.remove(fileName)){ui->plainTextEdit->appendPlainText("删除成功:"+fileName);} else {ui->plainTextEdit->appendPlainText("删除失败:"+fileName);}
}
// dir.rename(fileName, newFile)
void Dialog::on_btnDirRename_clicked()
{showBtnInfo(sender());QString fileName = ui->lineEditFile->text();QFileInfo fileInfo(fileName);QDir dir(ui->lineEditDir->text());QString newFile = fileInfo.path()+"/"+fileInfo.baseName()+".XYZ";if(dir.rename(fileName, newFile)){ui->plainTextEdit->appendPlainText("源文件:"+fileName);ui->plainTextEdit->appendPlainText("修改后的文件:"+newFile);} else {ui->plainTextEdit->appendPlainText("修改失败");}
}
// lastDir.setPath(aDir)
void Dialog::on_btnSetPath_clicked()
{showBtnInfo(sender());QString curDir = QDir::currentPath();QDir lastDir(curDir);ui->plainTextEdit->appendPlainText("当前目录:"+lastDir.absolutePath());QString aDir = QFileDialog::getExistingDirectory(this, "选择一个目录",curDir);if(aDir.isEmpty()){return;}ui->lineEditDir->setText(aDir);lastDir.setPath(aDir);ui->plainTextEdit->appendPlainText("选择后的目录:"+lastDir.absolutePath());
}
// aDir.removeRecursively()
void Dialog::on_btnRemoveRecursively_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());if(aDir.removeRecursively()){ui->plainTextEdit->appendPlainText("递归删除成功");} else {ui->plainTextEdit->appendPlainText("递归删除失败");}
}
// aDir.absoluteFilePath(ui->lineEditFile->text())
void Dialog::on_btnAbsoluteFilePath_2_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());QString str = aDir.absoluteFilePath(ui->lineEditFile->text());ui->plainTextEdit->appendPlainText(str);
}
// aDir.absolutePath()
void Dialog::on_btnDirAbsolutePath_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());ui->plainTextEdit->appendPlainText(aDir.absolutePath());
}
// aDir.canonicalPath()
void Dialog::on_btnCanonicalPath_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());ui->plainTextEdit->appendPlainText(aDir.canonicalPath());
}
// aDir.filePath(ui->lineEditFile->text())
void Dialog::on_btnDirFilePath_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());QString filePath = aDir.filePath(ui->lineEditFile->text());ui->plainTextEdit->appendPlainText(filePath);
}
// aDir.path()
void Dialog::on_btnDirPath_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());ui->plainTextEdit->appendPlainText(aDir.path());
}
// aDir.dirName()
void Dialog::on_btnDirName_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());ui->plainTextEdit->appendPlainText(aDir.dirName());
}
// aDir.exists()
void Dialog::on_btnDirExists_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());if(aDir.exists()){ui->plainTextEdit->appendPlainText("存在:"+aDir.dirName());} else {ui->plainTextEdit->appendPlainText("不存在:"+aDir.dirName());}}
// aDir.isEmpty()
void Dialog::on_btnDirIsEmpty_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());if(aDir.isEmpty()){ui->plainTextEdit->appendPlainText("空文件夹:"+aDir.dirName());} else {ui->plainTextEdit->appendPlainText("非空文件夹:"+aDir.dirName());}
}
// aDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)
void Dialog::on_btnDirEntryList_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());QStringList strList = aDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);ui->plainTextEdit->appendPlainText(aDir.dirName()+"目录下的所有目录:");for(QString &dir : strList){ui->plainTextEdit->appendPlainText(dir);}
}
// aDir.entryList(QDir::Files)
void Dialog::on_btnFileEntryList_clicked()
{showBtnInfo(sender());QDir aDir(ui->lineEditDir->text());QStringList strList = aDir.entryList(QDir::Files);ui->plainTextEdit->appendPlainText(aDir.dirName()+"目录下的所有文件:");for(QString &dir : strList){ui->plainTextEdit->appendPlainText(dir);}
}
// 1.在系统临时目录下创建临时文件夹
void Dialog::on_btnCreateTmpDir_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("QDir::tempPath()="+QDir::tempPath());QTemporaryDir dir;dir.setAutoRemove(true);ui->plainTextEdit->appendPlainText(dir.path());
}
// 1.在系统临时目录下创建临时文件
void Dialog::on_btnCreateTmpFile_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("QDir::tempPath()="+QDir::tempPath());QTemporaryFile aFile;aFile.setAutoRemove(true);aFile.open();ui->plainTextEdit->appendPlainText(aFile.fileName());aFile.close();
}
// 2.在指定目录下创建临时文件夹
void Dialog::on_btnCreateTmpDir_2_clicked()
{showBtnInfo(sender());QString specDir = ui->lineEditDir->text();ui->plainTextEdit->appendPlainText("指定目录="+specDir);QTemporaryDir dir(specDir + "/TempDir_XXX");dir.setAutoRemove(false);ui->plainTextEdit->appendPlainText(dir.path());
}
// 2.在指定目录下创建临时文件
void Dialog::on_btnCreateTmpFile_2_clicked()
{showBtnInfo(sender());QString specDir = ui->lineEditDir->text();ui->plainTextEdit->appendPlainText("指定目录="+specDir);QTemporaryFile aFile(specDir+"/TempFile_XXX");aFile.setAutoRemove(false);aFile.open();ui->plainTextEdit->appendPlainText(aFile.fileName());aFile.close();
}
// 3.在当前目录下创建临时文件夹
void Dialog::on_btnCreateCurTmpDir_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("当前路径="+QDir::currentPath());QTemporaryDir dir("SubDir_XXX");dir.setAutoRemove(false);ui->plainTextEdit->appendPlainText(dir.path());
}
// 3.在当前目录下创建临时文件
void Dialog::on_btnCreateCurTmpFile_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("当前路径="+QDir::currentPath());QTemporaryFile aFile("CurTempFile_XXX.temp");aFile.setAutoRemove(false);aFile.open();ui->plainTextEdit->appendPlainText(aFile.fileName());aFile.close();
}
void Dialog::do_directoryChanged(const QString &path)
{ui->plainTextEdit->appendPlainText(path + "目录发生了变化");
}void Dialog::do_fileChanged(const QString &path)
{ui->plainTextEdit->appendPlainText(path+"文件发生了变化");
}
// addPath()并开始监视
void Dialog::on_btnAddPathWatcher_clicked()
{showBtnInfo(sender());if(fileWatcher == NULL){fileWatcher = new QFileSystemWatcher(this);}fileWatcher->addPath(ui->lineEditDir->text());fileWatcher->addPath(ui->lineEditFile->text());connect(fileWatcher, &QFileSystemWatcher::directoryChanged, this, &Dialog::do_directoryChanged);connect(fileWatcher, &QFileSystemWatcher::fileChanged, this, &Dialog::do_fileChanged);
}
// removePath()并停止监视
void Dialog::on_btnRemovePathWatcher_clicked()
{showBtnInfo(sender());fileWatcher->removePath(ui->lineEditDir->text());fileWatcher->removePath(ui->lineEditFile->text());disconnect(fileWatcher);
}
// directories()
void Dialog::on_btnDirectories_clicked()
{showBtnInfo(sender());for(auto &item : fileWatcher->directories()){ui->plainTextEdit->appendPlainText(item);}
}
// files()
void Dialog::on_btnFiles_clicked()
{showBtnInfo(sender());for(QString &item : fileWatcher->files()){ui->plainTextEdit->appendPlainText(item);}
}
相关文章:
Qt文件和目录相关操作
1.相关说明 QCoreApplication类、QFile类、QDir、QTemporaryDir类、QTemporaryFile类、QFileSystemWatcher类的相关函数 2.相关界面 3.相关代码 #include "dialog.h" #include "ui_dialog.h" #include <QFileDialog> #include <QTemporaryDir>…...
递归、搜索与回溯算法(专题一:递归)
往期文章(希望小伙伴们在看这篇文章之前,看一下往期文章) (1)递归、搜索与回溯算法(专题零:解释回溯算法中涉及到的名词)【回溯算法入门必看】-CSDN博客 接下来我会用几道题&#…...
element-ui 打包流程源码解析(下)
目录 目录结构和使用1,npm 安装1.1,完整引入1.2,按需引入 2,CDN3,国际化 接上文:element-ui 打包流程源码解析(上) 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…...
ChatGPT给出的前端面试考点(Vue.js)
ChatGPT给出的前端面试考点(Vue.js) 答案 1. Vue.js是什么?它的主要特点是什么? Vue.js是一个渐进式JavaScript框架,用于构建用户界面。它的主要特点包括: 数据绑定:Vue.js使用双向数据绑定&…...
ChatGPT 商业提示词攻略书
原文:ChatGPT Business Prompt Playbook 译者:飞龙 协议:CC BY-NC-SA 4.0 一、书系介绍 人工智能发展迅速。非常迅速。 所以我希望你做两件事: (1) 在 Twitter 上关注我:iamkylebalmer (2) 订阅我的免费电子邮件通…...
Notepad++运行C语言输出乱码
方法一:编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码,我是重新输入中文 重新编译执行即可 缺陷:重开一个程序有中文还是会显示乱码,需要重新设置编码,比较麻烦 方法二:设置-首选项-新建-右侧编…...
深入解析 Java 方法引用:Lambda 表达式的进化之路
前言 方法引用是 Java 8 提供的一种新特性,它允许我们更简洁地传递现有方法作为参数。这项特性实际上是对 Lambda 表达式的一种补充,通过方法引用,我们可以直接引用现有方法,而无需编写完整的Lambda表达式。最近在使用方法引用的…...
MySQL作业 (3)多表查询
多表查询 1.创建student和score表2.为student表和score表增加记录3.查询student表的所有记录4.查询student表的第2条到4条记录5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息6.…...
ConcurrentHashMap和HashMap的区别
什么是HashMap (1)HashMap 是基于 Map 接口的非同步实现,线程不安全,是为了快速存取而设计的;它采用 key-value 键值对的形式存放元素(并封装成 Node 对象),允许使用 null 键和 nul…...
MCM备赛笔记——图论模型
Key Concept 图论是数学的一个分支,专注于研究图的性质和图之间的关系。在图论中,图是由顶点(或节点)以及连接这些顶点的边(或弧)组成的。图论的模型广泛应用于计算机科学、通信网络、社会网络、生物信息学…...
算法笔记(动态规划入门题)
1.找零钱 int coinChange(int* coins, int coinsSize, int amount) {int dp[amount 1];memset(dp,-1,sizeof(dp));dp[0] 0;for (int i 1; i < amount; i)for (int j 0; j < coinsSize; j)if (coins[j] < i && dp[i - coins[j]] ! -1)if (dp[i] -1 || dp[…...
开发实践_阶段三
编写一个告知APP。 需求: 1.登录、注册 2.发布定向讯息:检测是否登录,是则向用户或用户组发布 ”名称 时间“ ;否则提示登录 3.讯息接收:检测是否登录,是则查看收到信息(未读数)…...
codegeex和通义灵码辅助编程——以及通义灵码无法登陆的bug解决
通义的速度更快,延迟低,150ms。 codegeex速度慢些,延迟较高,500ms。 个人评价:延迟低的会很好地改善使用体验,所以通义加分。 但是整体功能上还是codegeex强一些,可以选中代码进行对话…...
Android14之DefaultKeyedVector实现(一百八十二)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
银河麒麟操作系统 v10 中离线安装 Docker
银河麒麟操作系统 v10 中离线安装 Docker 1. 查看系统版本2. 查看 Linux 内核版本(3.10以上)3. 查看 iptabls 版本(1.4以上)4. 判断处理器架构5. 离线下载 Docker 安装包6. 移动解压出来的二进制文件到 /usr/bin 目录中7. 配置 Do…...
如何系统的学习Python
学习 Python 的时候,可以按照以下步骤进行系统学习: 学习 Python 基础知识:首先了解 Python 的基础语法、数据类型、变量和运算符等基本概念。可以通过阅读《Python编程从入门到实践》等经典教材来建立基础。也可以通过翻阅Python官方文档来进…...
Java并发基础:一文讲清util.concurrent包的作用
java.util.concurrent包是 Java 中用于并发编程的重要工具集,提供了线程池、原子变量、并发集合、同步工具类、阻塞队列等一系列高级并发工具类,使用这些工具类可以极大地简化并发编程的难度,减少出错的可能性,提高程序的效率和可…...
C++PythonC# 三语言OpenCV从零开发(2):教程选择
文章目录 相关专栏前言视频教学和官方文档视频教程OpenCV 官方教程最终选择我的最终选择 相关专栏 C&Python&Csharp in OpenCV 前言 OpenCV 有官方的教程和简单的视频教程: OpenCV 官方教程 B站也有相关的视频教学 OpenCV4 C 快速入门视频30讲 - 系列合集 …...
【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制
前言:本文对网络表概念解读板框绘制(确定PCB板子轮廓) 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2,将设计的原理图转为了PCB,在PCB界面下出现了所有的封装,以及所有的飞线属性&…...
nodejs前端项目的CI/CD实现(二)jenkins的容器化部署
一、背景 docker安装jenkins,可能你会反问,这太简单了,有什么好讲的。 我最近就接手了一个打包项目,它是一个nodejs的前端项目,jenkins已在容器里部署且运行OK。 但是,前端组很追求新技术,不…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
