Qt 文件目录操作
Qt 文件目录操作
QDir 类提供访问系统目录结构
QDir 类提供对目录结构及其内容的访问。QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它还可以用于访问 Qt 的资源系统。
Qt 使用“/”作为通用目录分隔符,与“/”在 URL 中用作路径分隔符的方式相同。如果您总是使用“/”作为目录分隔符,Qt 将转换您的路径以符合底层操作系统。
QDir 可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开头(在 Windows 下,可以选择以驱动器规格开头)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。
下面是QDir的一些常用方法:
- 构造函数:QDir(const QString &path = QString())
- 判断路径是否存在:bool exists() const;
- 判断是否是文件:bool isFile() const;
- 判断是否是文件夹:bool isDir() const;
- 获取当前路径:QString absolutePath() const;
- 获取文件名:QString fileName() const;
- 获取文件目录:QString dirName() const;
- 获取文件大小:qint64 size() const;
- 获取文件的创建时间:QDateTime created() const;
- 获取文件的最后修改时间:QDateTime lastModified() const;


















main函数 main.cpp 文件:
#include "sample7_3QDirFile.h"
#include <QtWidgets/QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);QCoreApplication::setOrganizationName("China University of Petroleum");sample7_3QDirFile w;w.show();return a.exec();
}
sample7_3QDirFile.h 文件
#pragma once#include <QtWidgets/QDialog>
#include "ui_sample7_3QDirFile.h"#include <QFileSystemWatcher>namespace Ui {class sample7_3QDirFile;
}class sample7_3QDirFile : public QDialog
{Q_OBJECTpublic:sample7_3QDirFile(QWidget *parent = Q_NULLPTR);~sample7_3QDirFile();private:Ui::sample7_3QDirFileClass *ui;public slots:void on_directoryChanged(const QString path);void on_fileChanged(const QString path);private:QFileSystemWatcher fileWatcher;void showBtnInfo(QObject* btn);private slots:///--------QCoreApplication类---------------void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();///--------QFile类-文件操作---------------void on_pushButton_7_clicked();void on_pushButton_8_clicked();void on_pushButton_9_clicked();void on_pushButton_10_clicked();void on_pushButton_11_clicked();void on_pushButton_12_clicked();void on_pushButton_13_clicked();void on_pushButton_14_clicked();///--------QFileInfo类 - 文件信息---------------void on_pushButton_15_clicked();void on_pushButton_16_clicked();void on_pushButton_17_clicked();void on_pushButton_18_clicked();void on_pushButton_19_clicked();void on_pushButton_20_clicked();void on_pushButton_21_clicked();void on_pushButton_22_clicked();void on_pushButton_23_clicked();void on_pushButton_24_clicked();void on_pushButton_25_clicked();void on_pushButton_26_clicked();void on_pushButton_27_clicked();void on_pushButton_28_clicked();void on_pushButton_29_clicked();void on_pushButton_30_clicked();void on_pushButton_31_clicked();void on_pushButton_32_clicked();///--------QDir类-目录操作---------------void on_pushButton_33_clicked();void on_pushButton_34_clicked();void on_pushButton_35_clicked();void on_pushButton_36_clicked();void on_pushButton_37_clicked();void on_pushButton_38_clicked();void on_pushButton_39_clicked();void on_pushButton_40_clicked();void on_pushButton_41_clicked();void on_pushButton_42_clicked();void on_pushButton_43_clicked();void on_pushButton_44_clicked();void on_pushButton_45_clicked();void on_pushButton_46_clicked();void on_pushButton_47_clicked();void on_pushButton_48_clicked();void on_pushButton_49_clicked();void on_pushButton_50_clicked();void on_pushButton_51_clicked();void on_pushButton_52_clicked();///--------QTemporaryDir和QTemporaryFile---------------void on_pushButton_53_clicked();void on_pushButton_54_clicked();///--------QFileSystemWatcher类---------------void on_pushButton_55_clicked();void on_pushButton_56_clicked();void on_pushButton_57_clicked();void on_pushButton_58_clicked();//打开文件void on_pushButton_59_clicked();void on_pushButton_60_clicked();void on_pushButton_61_clicked();};
sample7_3QDirFile.cpp 文件:
#include "sample7_3QDirFile.h"#include <QFileDialog>
#include <QDateTime>
#include <QTemporaryDir>
#include <QTemporaryFile>//解决QT中中文显示乱码问题
#pragma execution_character_set("utf-8")sample7_3QDirFile::sample7_3QDirFile(QWidget *parent): QDialog(parent)
{ui->setupUi(this);this->setWindowFlags(Qt::Window);
}
sample7_3QDirFile::~sample7_3QDirFile()
{delete ui;
}//显示btn的信息
void sample7_3QDirFile::showBtnInfo(QObject *btn)
{ QPushButton *theBtn = static_cast<QPushButton*>(btn);ui->plainTextEdit->appendPlainText(theBtn->text());ui->plainTextEdit->appendPlainText(theBtn->toolTip() + "\n");
}//directoryChanged()信号的槽函数
void sample7_3QDirFile::on_directoryChanged(const QString path)
{ui->plainTextEdit->appendPlainText(path);ui->plainTextEdit->appendPlainText("目录发生了变化\n");
}//fileChanged()信号的槽函数
void sample7_3QDirFile::on_fileChanged(const QString path)
{ui->plainTextEdit->appendPlainText(path);ui->plainTextEdit->appendPlainText("文件发生了变化\n");
}///--------QCoreApplication类---------------
void sample7_3QDirFile::on_pushButton_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::applicationDirPath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_2_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::applicationFilePath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_3_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::applicationName();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_4_clicked()
{showBtnInfo(sender());QStringList strList = QCoreApplication::libraryPaths();for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i));}ui->plainTextEdit->appendPlainText("");
}void sample7_3QDirFile::on_pushButton_5_clicked()
{showBtnInfo(sender());QString str = QCoreApplication::organizationName();ui->plainTextEdit->appendPlainText(str + "\n");}void sample7_3QDirFile::on_pushButton_6_clicked()
{QCoreApplication::exit();
}///--------QFile类-文件操作---------------
void sample7_3QDirFile::on_pushButton_7_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFileInfo fileInfo(sous);//QString newFile = fileInfo.path() + "/" + fileInfo.baseName() + "--副本." + fileInfo.suffix();QFile::copy(sous, newFile);ui->plainTextEdit->appendPlainText("源文件:" + sous);ui->plainTextEdit->appendPlainText("复制为文件:" + newFile + "\n");
}void sample7_3QDirFile::on_pushButton_8_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件bool the = QFile::exists(sous);if (the){ui->plainTextEdit->appendPlainText(+"true \n");}else{ui->plainTextEdit->appendPlainText(+"false \n");}
}void sample7_3QDirFile::on_pushButton_9_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFile::remove(sous);ui->plainTextEdit->appendPlainText("删除文件:" + sous + "\n");
}
//QFile::rename()
void sample7_3QDirFile::on_pushButton_10_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFileInfo fileInfo(sous);//源文件信息QString newFile = fileInfo.path() + "/" + fileInfo.baseName() + ".XYZ"; //更改文件后缀为".XYZ"QFile::rename(sous, newFile); //重命名文件ui->plainTextEdit->appendPlainText("源文件:" + sous);ui->plainTextEdit->appendPlainText("重命名为:" + newFile + "\n");
}void sample7_3QDirFile::on_pushButton_11_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFile file(sous);QFileInfo fileInfo(sous);//QString newFile = fileInfo.path() + "/" + fileInfo.baseName() + "--副本." + fileInfo.suffix();file.copy(newFile);ui->plainTextEdit->appendPlainText("源文件:" + sous);ui->plainTextEdit->appendPlainText("复制为文件:" + newFile + "\n");
}void sample7_3QDirFile::on_pushButton_12_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFile file(sous);bool the = file.exists();if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}void sample7_3QDirFile::on_pushButton_13_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFile file(sous);file.remove();ui->plainTextEdit->appendPlainText("删除文件:" + sous + "\n");
}//QFile.rename()
void sample7_3QDirFile::on_pushButton_14_clicked()
{showBtnInfo(sender());QString sous = ui->editFile->text(); //源文件QFile file(sous); //源文件对象QFileInfo fileInfo(sous);//源文件信息QString newFile = fileInfo.path() + "/" + fileInfo.baseName() + ".XYZ"; //修改文件后缀为“.XYZ”file.rename(newFile); //重命名文件ui->plainTextEdit->appendPlainText("源文件:" + sous);ui->plainTextEdit->appendPlainText("重命名为:" + newFile + "\n");
}///--------QFileInfo类 - 文件信息---------------
//QFileInfo::absoluteFilePath()
void sample7_3QDirFile::on_pushButton_15_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.absoluteFilePath();ui->plainTextEdit->appendPlainText(str + "\n");
}
//QFileInfo::absolutePath()
void sample7_3QDirFile::on_pushButton_16_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.absolutePath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_17_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.fileName();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_18_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.filePath();ui->plainTextEdit->appendPlainText(str + "\n");
}//QFileInfo.size()
void sample7_3QDirFile::on_pushButton_19_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());qint64 dt = fileInfo.size();QString str = QString("%1 Bytes").arg(dt);ui->plainTextEdit->appendPlainText(str + "\n");
}//QFileInfo.path()
void sample7_3QDirFile::on_pushButton_20_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.path();ui->plainTextEdit->appendPlainText(str + "\n");
}//QFileInfo.basename()
void sample7_3QDirFile::on_pushButton_21_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.baseName();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_22_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.completeBaseName();ui->plainTextEdit->appendPlainText(str + "\n");}void sample7_3QDirFile::on_pushButton_23_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.suffix();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_24_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QString str = fileInfo.completeSuffix();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_25_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editDir->text());bool the = fileInfo.isDir();if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}void sample7_3QDirFile::on_pushButton_26_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());bool the = fileInfo.isFile();if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}void sample7_3QDirFile::on_pushButton_27_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());bool the = fileInfo.isExecutable();if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}void sample7_3QDirFile::on_pushButton_28_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QDateTime dt = fileInfo.created();QString str = dt.toString("yyyy-MM-dd hh:mm:ss");ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_29_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QDateTime dt = fileInfo.lastModified();QString str = dt.toString("yyyy-MM-dd hh:mm:ss");ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_30_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());QDateTime dt = fileInfo.lastRead();QString str = dt.toString("yyyy-MM-dd hh:mm:ss");ui->plainTextEdit->appendPlainText(str + "\n");
}//静态函数exists()
void sample7_3QDirFile::on_pushButton_31_clicked()
{showBtnInfo(sender());bool the = QFileInfo::exists(ui->editFile->text());if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");}
void sample7_3QDirFile::on_pushButton_32_clicked()
{showBtnInfo(sender());QFileInfo fileInfo(ui->editFile->text());bool the = fileInfo.exists();if (the)ui->plainTextEdit->appendPlainText(+"true \n");elseui->plainTextEdit->appendPlainText(+"false \n");
}///--------QDir类-目录操作---------------
void sample7_3QDirFile::on_pushButton_33_clicked()
{showBtnInfo(sender());QString str = QDir::tempPath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_34_clicked()
{showBtnInfo(sender());QString str = QDir::rootPath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_35_clicked()
{showBtnInfo(sender());QString str = QDir::homePath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_36_clicked()
{showBtnInfo(sender());QFileInfoList strList = QDir::drives();for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i).path());}ui->plainTextEdit->appendPlainText("\n");
}void sample7_3QDirFile::on_pushButton_37_clicked()
{showBtnInfo(sender());QString str = QDir::currentPath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_38_clicked()
{showBtnInfo(sender());QDir::setCurrent(ui->editDir->text());QString str = QDir::currentPath();ui->editDir->setText(str);ui->plainTextEdit->appendPlainText("设置当前路径为:" + str + "\n");
}
//-----文件和目录操作------
void sample7_3QDirFile::on_pushButton_39_clicked()
{showBtnInfo(sender());QString subDir = "subdir1";QDir dir(ui->editDir->text());bool ok = dir.mkdir(subDir);if (ok){ui->plainTextEdit->appendPlainText("所选目录下成功新建一个目录 " + subDir + "\n");}else{ui->plainTextEdit->appendPlainText("创建目录失败\n");}
}
void sample7_3QDirFile::on_pushButton_40_clicked()
{showBtnInfo(sender());QString sous(ui->editDir->text());QDir dir(sous);bool ok = dir.rmdir(sous);if (ok){ui->plainTextEdit->appendPlainText("成功删除所选目录\n" + sous + "\n");}else{ui->plainTextEdit->appendPlainText("删除失败\n");}
}
void sample7_3QDirFile::on_pushButton_41_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString sous(ui->editFile->text());bool ok = dir.remove(sous);if (ok){ui->plainTextEdit->appendPlainText("删除文件:" + sous + "\n");}else{ui->plainTextEdit->appendPlainText("删除文件失败\n");}
}
void sample7_3QDirFile::on_pushButton_42_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString sous = ui->editFile->text(); //源文件QFileInfo fileInfo(sous);//QString newFile = fileInfo.path() + "/" + fileInfo.baseName() + ".XYZ";dir.rename(sous, newFile);ui->plainTextEdit->appendPlainText("源文件:" + sous);ui->plainTextEdit->appendPlainText("重命名为:" + newFile + "\n");
}
void sample7_3QDirFile::on_pushButton_43_clicked()
{showBtnInfo(sender());QString curDir = QDir::currentPath();QDir lastDir(curDir);ui->plainTextEdit->appendPlainText("选择目录之前:" + lastDir.absolutePath());QString aDir = QFileDialog::getExistingDirectory(this, "选择一个目录", curDir, QFileDialog::ShowDirsOnly);if (aDir.isEmpty()){return;}ui->editDir->setText(aDir);lastDir.setPath(aDir);ui->plainTextEdit->appendPlainText("选择目录之后:" + lastDir.absolutePath() + "\n");
}
void sample7_3QDirFile::on_pushButton_44_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());bool ok = dir.removeRecursively();if (ok){ui->plainTextEdit->appendPlainText("删除目录及文件成功\n");}else{ui->plainTextEdit->appendPlainText("删除目录及文件失败\n");}
}//-----文件或目录信息------
void sample7_3QDirFile::on_pushButton_45_clicked()
{//absoluteFilePath(),showBtnInfo(sender());QDir dir(ui->editDir->text());QString str = dir.absoluteFilePath(ui->editFile->text());ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_46_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString str = dir.absolutePath();ui->plainTextEdit->appendPlainText(str + "\n");}void sample7_3QDirFile::on_pushButton_47_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString str = dir.canonicalPath();ui->plainTextEdit->appendPlainText(str + "\n");
}void sample7_3QDirFile::on_pushButton_48_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString str = dir.filePath(ui->editFile->text());ui->plainTextEdit->appendPlainText(str + "\n");}
void sample7_3QDirFile::on_pushButton_49_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());bool the = dir.exists();if (the)ui->plainTextEdit->appendPlainText("true \n");elseui->plainTextEdit->appendPlainText("false \n");
}
void sample7_3QDirFile::on_pushButton_50_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QString str = dir.dirName();ui->plainTextEdit->appendPlainText(str + "\n");
}
//列出子目录
void sample7_3QDirFile::on_pushButton_51_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QStringList strList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);ui->plainTextEdit->appendPlainText("所选目录下的所有目录:");for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i));}ui->plainTextEdit->appendPlainText("\n");}
//列出所有文件
void sample7_3QDirFile::on_pushButton_52_clicked()
{showBtnInfo(sender());QDir dir(ui->editDir->text());QStringList strList = dir.entryList(QDir::Files);ui->plainTextEdit->appendPlainText("所选目录下的所有文件:");for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i));}ui->plainTextEdit->appendPlainText("\n");
}///--------QTemporaryDir和QTemporaryFile---------------
//QTemporaryDir
void sample7_3QDirFile::on_pushButton_53_clicked()
{showBtnInfo(sender());QTemporaryDir dir;dir.setAutoRemove(true);ui->plainTextEdit->appendPlainText(dir.path() + "\n");
}
//QTemporaryFile
void sample7_3QDirFile::on_pushButton_54_clicked()
{showBtnInfo(sender());QTemporaryFile aFile;aFile.setAutoRemove(true);aFile.open();ui->plainTextEdit->appendPlainText(aFile.fileName() + "\n");
}///--------QFileSystemWatcher类---------------
//开始监听,addPath()
void sample7_3QDirFile::on_pushButton_55_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("监听目录:" + ui->editDir->text() + "\n");fileWatcher.addPath(ui->editDir->text());//添加监听目录fileWatcher.addPath(ui->editFile->text());//添加监听文件QObject::connect(&fileWatcher, &QFileSystemWatcher::directoryChanged,this, &sample7_3QDirFile::on_directoryChanged); //directoryChangedQObject::connect(&fileWatcher, &QFileSystemWatcher::fileChanged,this, &sample7_3QDirFile::on_fileChanged); //fileChanged
}
//停止监听,removePath()
void sample7_3QDirFile::on_pushButton_56_clicked()
{showBtnInfo(sender());ui->plainTextEdit->appendPlainText("停止监听目录:" + ui->editDir->text() + "\n");fileWatcher.removePath(ui->editDir->text());//fileWatcher.removePath(ui->editFile->text());//QObject::disconnect(&fileWatcher, &QFileSystemWatcher::directoryChanged,this, &sample7_3QDirFile::on_directoryChanged); //directoryChangedQObject::disconnect(&fileWatcher, &QFileSystemWatcher::fileChanged,this, &sample7_3QDirFile::on_fileChanged); //fileChanged
}
//显示监听目录,directories()
void sample7_3QDirFile::on_pushButton_57_clicked()
{showBtnInfo(sender());QStringList strList = fileWatcher.directories();for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i));}ui->plainTextEdit->appendPlainText("");}
//显示监听文件,files()
void sample7_3QDirFile::on_pushButton_58_clicked()
{showBtnInfo(sender());QStringList strList = fileWatcher.files();for (int i = 0; i < strList.count(); i++){ui->plainTextEdit->appendPlainText(strList.at(i));}ui->plainTextEdit->appendPlainText("");
}//打开文件
void sample7_3QDirFile::on_pushButton_59_clicked()
{QString curDir = QDir::currentPath();QString aFile = QFileDialog::getOpenFileName(this, "打开一个文件", curDir, "所有文件(*.*)");ui->editFile->setText(aFile);
}void sample7_3QDirFile::on_pushButton_60_clicked()
{QString curDir = QDir::currentPath();QString aDir = QFileDialog::getExistingDirectory(this, "选择一个目录", curDir, QFileDialog::ShowDirsOnly);ui->editDir->setText(aDir);
}void sample7_3QDirFile::on_pushButton_61_clicked()
{ui->plainTextEdit->clear();
}

相关文章:
Qt 文件目录操作
Qt 文件目录操作 QDir 类提供访问系统目录结构 QDir 类提供对目录结构及其内容的访问。QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它还可以用于访问 Qt 的资源系统。 Qt 使用“/”作为通用目录分隔符,与“/”在 URL 中用作路径分隔符…...
Pandas 数据清洗
1.数据清洗定义 数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。 2.清洗空值 DataFrame.dropna(axis0, howany, threshN…...
IO学习笔记
当前需求,希望进行游戏可以保存游戏进度,可以将游戏的进度保存到一个文本文件,每一次打完游戏更新文本内容,下一次打游戏读取游戏进度,这里就涉及到两个知识IO流和File的知识。 File类 概述 java.io.File 类是文件…...
汇编练习-1
1、要求 练习要求引自《汇编语言-第4版》实验10.3(P209页) -编程,将data段中的数据,以10进制的形式显示出来 data segment dw 123,12666,1,8,3,38 data ends 2、实现代码(可惜没找到csdn对8086汇编显示方式) assume cs:codedata segmentdw 16 dup(0) ;除…...
初识二叉树( 二)
初识二叉树 二 实现链式结构二叉树前中后序遍历遍历规则代码实现 结点个数以及高度等层序遍历判断是否为完全二叉树 实现链式结构二叉树 ⽤链表来表示⼀棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针…...
AcWing1077-cnblog
问题背景 给定一个树形结构的图,每个节点代表一个地点,每个节点有一个守卫的代价。我们希望以最低的代价在树的节点上放置守卫,使得整棵树的所有节点都被监控。可以通过三种方式覆盖一个节点: 由父节点监控。由子节点监控。自己…...
五、SpringBoot3实战(1)
一、SpringBoot3介绍 1.1 SpringBoot3简介 SpringBoot版本:3.0.5 https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started.introducing-spring-boot 到目前为止,你已经学习了多种配置Spring程序的方式…...
练习LabVIEW第三十三题
学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第三十三题: 用labview编写一个判断素数的程序 开始编写: LabVIEW判断素数,首先要搞…...
如何在服务器端对PDF和图像进行OCR处理
介绍 今天我想和大家分享一个我在研究技术资料时发现的很好玩的东西——Tesseract。这不仅仅是一个普通的库,而是一个用C语言编写的OCR神器,能够识别一大堆不同国家的语言。我一直在寻找能够处理各种文档的工具,而Tesseract就像是给了我一把…...
Windows 下实验视频降噪算法 MeshFlow 详细教程
MeshFlow视频降噪算法 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow,它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field),其运动矢量 (motion vectors) 仅在网格顶点 (m…...
Python入门:如何正确的控制Python异步并发量(制并发量的关键技巧与易错点解析)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 异步并发量控制 📒📝 Python异步并发简介📝 为什么要限制并发量🎈 资源管理🎈 服务稳定性📝 新手容易犯的错误🎈 忽略并发量限制🎈 错误设置并发量📝 设置并发量要注意的事情🎈 了解任务类型🎈 考虑系统资…...
qt QCheckBox详解
QCheckBox 是 Qt 框架中的一个控件,用于创建复选框,允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类,因此继承了按钮的特性。它表示一个复选框,用户可以通过…...
PAT甲级-1041 Be Unique
题目 题目大意 从一组数字中选出第一个唯一出现的数,输出该数。如果没有,则输出None。 思路 哈希的思想,将数值作为索引,对应该数值出现的次数,然后遍历数组即可。 注意第一个数字是指数字的个数,不是数…...
【jvm】如何设置堆内存大小
目录 1. 使用命令行参数设置2. idea中设置3. 注意事项 1. 使用命令行参数设置 1.在Java命令后添加-Xms和-Xmx参数。2.-Xms参数用于设置JVM的初始堆内存大小,等价于-XX:InitialHeapSize。3.-Xmx参数用于设置JVM的最大堆内存大小,等价于-XX:MaxHeapSize。…...
kernel源码分析 do_msgsnd read_msg
笔者分析的源码是v 5.11.22 链接:msg.c - ipc/msg.c - Linux source code v5.11.22 - Bootlin do_msgsnd static long do_msgsnd(int msqid, long mtype, void __user *mtext,size_t msgsz, int msgflg) {struct msg_queue *msq;struct msg_msg *msg;int err;str…...
掌握 CTE 技巧,实现连续日期和月份的 SQL 报表统计
在 SQL 查询中,报表统计往往涉及到特定时间段内的数据汇总,如每日、每月的销售数据等。然而,面对缺少数据的日期或月份,传统 SQL 查询可能会直接跳过这些日期,使得输出的报表在视觉上并不连续。本文将展示如何利用 CTE…...
【表格解决问题】EXCEL行数过多,WPS如何按逐行分别打印多个纸张中
1 问题描述 如图:我的表格行数太多了。打印在一张纸上有点不太好看 2 解决方式 Step01:先选中你需要打印的部分,找到【页面】->【打印区域】->【设置打印区域】 Step02:先选中一行,找到【插入分页符】 Step0…...
Maven讲解从基础到高级配置与实践
一、基础认知 1.1 Maven 的主要作用 Maven 主要是用来管理 Java 项目构建流程的工具,包括以下几个方面: 依赖管理:通过 POM.xml 文件管理项目的外部依赖库,不同版本的依赖包可以通过 Maven 中央仓库自动下载,减少了…...
Vue3组件式父子传值
下面是使用 <script setup> 语法的 Vue 3 组件之间传值的示例。 示例 1:使用 Props 和 Emits 父组件 <template><div><h1>父组件</h1><ChildComponent :message="parentMessage" @reply="handleReply" /><p>…...
网页自动化测试和爬虫:Selenium库入门与进阶
网页自动化测试和爬虫:Selenium库入门与进阶 在现代Web开发和数据分析中,自动化测试和数据采集成为了开发流程中的重要部分。Python 的 Selenium 库是一种强大的工具,不仅用于网页自动化测试,也在网页爬虫中得到了广泛的应用。本…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
