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

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>…...

递归、搜索与回溯算法(专题一:递归)

往期文章&#xff08;希望小伙伴们在看这篇文章之前&#xff0c;看一下往期文章&#xff09; &#xff08;1&#xff09;递归、搜索与回溯算法&#xff08;专题零&#xff1a;解释回溯算法中涉及到的名词&#xff09;【回溯算法入门必看】-CSDN博客 接下来我会用几道题&#…...

element-ui 打包流程源码解析(下)

目录 目录结构和使用1&#xff0c;npm 安装1.1&#xff0c;完整引入1.2&#xff0c;按需引入 2&#xff0c;CDN3&#xff0c;国际化 接上文&#xff1a;element-ui 打包流程源码解析&#xff08;上&#xff09; 文章中提到的【上文】都指它 ↑ 目录结构和使用 我们从使用方式来…...

ChatGPT给出的前端面试考点(Vue.js)

ChatGPT给出的前端面试考点&#xff08;Vue.js&#xff09; 答案 1. Vue.js是什么&#xff1f;它的主要特点是什么&#xff1f; Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它的主要特点包括&#xff1a; 数据绑定&#xff1a;Vue.js使用双向数据绑定&…...

ChatGPT 商业提示词攻略书

原文&#xff1a;ChatGPT Business Prompt Playbook 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 一、书系介绍 人工智能发展迅速。非常迅速。 所以我希望你做两件事&#xff1a; (1) 在 Twitter 上关注我&#xff1a;iamkylebalmer (2) 订阅我的免费电子邮件通…...

Notepad++运行C语言输出乱码

方法一&#xff1a;编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码&#xff0c;我是重新输入中文 重新编译执行即可 缺陷&#xff1a;重开一个程序有中文还是会显示乱码&#xff0c;需要重新设置编码&#xff0c;比较麻烦 方法二&#xff1a;设置-首选项-新建-右侧编…...

深入解析 Java 方法引用:Lambda 表达式的进化之路

前言 方法引用是 Java 8 提供的一种新特性&#xff0c;它允许我们更简洁地传递现有方法作为参数。这项特性实际上是对 Lambda 表达式的一种补充&#xff0c;通过方法引用&#xff0c;我们可以直接引用现有方法&#xff0c;而无需编写完整的Lambda表达式。最近在使用方法引用的…...

MySQL作业 (3)多表查询

多表查询 1.创建student和score表2.为student表和score表增加记录3.查询student表的所有记录4.查询student表的第2条到4条记录5.从student表查询所有学生的学号&#xff08;id&#xff09;、姓名&#xff08;name&#xff09;和院系&#xff08;department&#xff09;的信息6.…...

ConcurrentHashMap和HashMap的区别

什么是HashMap &#xff08;1&#xff09;HashMap 是基于 Map 接口的非同步实现&#xff0c;线程不安全&#xff0c;是为了快速存取而设计的&#xff1b;它采用 key-value 键值对的形式存放元素&#xff08;并封装成 Node 对象&#xff09;&#xff0c;允许使用 null 键和 nul…...

MCM备赛笔记——图论模型

Key Concept 图论是数学的一个分支&#xff0c;专注于研究图的性质和图之间的关系。在图论中&#xff0c;图是由顶点&#xff08;或节点&#xff09;以及连接这些顶点的边&#xff08;或弧&#xff09;组成的。图论的模型广泛应用于计算机科学、通信网络、社会网络、生物信息学…...

算法笔记(动态规划入门题)

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。 需求&#xff1a; 1.登录、注册 2.发布定向讯息&#xff1a;检测是否登录&#xff0c;是则向用户或用户组发布 ”名称 时间“ &#xff1b;否则提示登录 3.讯息接收&#xff1a;检测是否登录&#xff0c;是则查看收到信息&#xff08;未读数&#xff09…...

codegeex和通义灵码辅助编程——以及通义灵码无法登陆的bug解决

通义的速度更快&#xff0c;延迟低&#xff0c;150ms。 codegeex速度慢些&#xff0c;延迟较高&#xff0c;500ms。 个人评价&#xff1a;延迟低的会很好地改善使用体验&#xff0c;所以通义加分。 但是整体功能上还是codegeex强一些&#xff0c;可以选中代码进行对话&#xf…...

Android14之DefaultKeyedVector实现(一百八十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

银河麒麟操作系统 v10 中离线安装 Docker

银河麒麟操作系统 v10 中离线安装 Docker 1. 查看系统版本2. 查看 Linux 内核版本&#xff08;3.10以上&#xff09;3. 查看 iptabls 版本&#xff08;1.4以上&#xff09;4. 判断处理器架构5. 离线下载 Docker 安装包6. 移动解压出来的二进制文件到 /usr/bin 目录中7. 配置 Do…...

如何系统的学习Python

学习 Python 的时候&#xff0c;可以按照以下步骤进行系统学习&#xff1a; 学习 Python 基础知识&#xff1a;首先了解 Python 的基础语法、数据类型、变量和运算符等基本概念。可以通过阅读《Python编程从入门到实践》等经典教材来建立基础。也可以通过翻阅Python官方文档来进…...

Java并发基础:一文讲清util.concurrent包的作用

java.util.concurrent包是 Java 中用于并发编程的重要工具集&#xff0c;提供了线程池、原子变量、并发集合、同步工具类、阻塞队列等一系列高级并发工具类&#xff0c;使用这些工具类可以极大地简化并发编程的难度&#xff0c;减少出错的可能性&#xff0c;提高程序的效率和可…...

C++PythonC# 三语言OpenCV从零开发(2):教程选择

文章目录 相关专栏前言视频教学和官方文档视频教程OpenCV 官方教程最终选择我的最终选择 相关专栏 C&Python&Csharp in OpenCV 前言 OpenCV 有官方的教程和简单的视频教程&#xff1a; OpenCV 官方教程 B站也有相关的视频教学 OpenCV4 C 快速入门视频30讲 - 系列合集 …...

【嘉立创EDA-PCB设计指南】3.网络表概念解读+板框绘制

前言&#xff1a;本文对网络表概念解读板框绘制&#xff08;确定PCB板子轮廓&#xff09; 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2&#xff0c;将设计的原理图转为了PCB&#xff0c;在PCB界面下出现了所有的封装&#xff0c;以及所有的飞线属性&…...

nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

一、背景 docker安装jenkins&#xff0c;可能你会反问&#xff0c;这太简单了&#xff0c;有什么好讲的。 我最近就接手了一个打包项目&#xff0c;它是一个nodejs的前端项目&#xff0c;jenkins已在容器里部署且运行OK。 但是&#xff0c;前端组很追求新技术&#xff0c;不…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...