Qt 文件目录操作

news2024/11/23 3:07:10

Qt 文件目录操作

QDir 类提供访问系统目录结构

QDir 类提供对目录结构及其内容的访问。QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它还可以用于访问 Qt 的资源系统。

Qt 使用“/”作为通用目录分隔符,与“/”在 URL 中用作路径分隔符的方式相同。如果您总是使用“/”作为目录分隔符,Qt 将转换您的路径以符合底层操作系统。

QDir 可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开头(在 Windows 下,可以选择以驱动器规格开头)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

下面是QDir的一些常用方法:

  1. 构造函数:QDir(const QString &path = QString())
  2. 判断路径是否存在:bool exists() const;
  3. 判断是否是文件:bool isFile() const;
  4. 判断是否是文件夹:bool isDir() const;
  5. 获取当前路径:QString absolutePath() const;
  6. 获取文件名:QString fileName() const;
  7. 获取文件目录:QString dirName() const;
  8. 获取文件大小:qint64 size() const;
  9. 获取文件的创建时间:QDateTime created() const;
  10. 获取文件的最后修改时间: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_OBJECT

public:
	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");
	else
		ui->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");
	else
		ui->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");
	else
		ui->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");
	else
		ui->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");
	else
		ui->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");
	else
		ui->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");
	else
		ui->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); //directoryChanged
	QObject::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); //directoryChanged
	QObject::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();
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2230959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

qt QCheckBox详解

QCheckBox 是 Qt 框架中的一个控件&#xff0c;用于创建复选框&#xff0c;允许用户进行选择和取消选择。它通常用于表单、设置界面和任何需要用户选择的场景。 QCheckBox继承自QAbstractButton类&#xff0c;因此继承了按钮的特性。它表示一个复选框&#xff0c;用户可以通过…

读数据工程之道:设计和构建健壮的数据系统26数据建模

1. 数据建模 1.1. 良好的数据架构必须反映出使用这些数据的组织的业务目标和业务逻辑 1.2. 数据湖1.0、NoSQL和大数据系统的兴起&#xff0c;使工程师们有时是为了合理的性能提升去忽略传统的数据建模 1.3. 数据在企业中的地位急剧上升&#xff0c;人们越来越认识到&#xf…

2025生物发酵展(济南)为生物制造产业注入新活力共谱行业新篇章

2025第十四届国际生物发酵展将于3月3-5日济南盛大举办&#xff01;产业链逐步完整&#xff0c;展会面积再创历史新高&#xff0c;展览面积较上届增涨至60000平方米&#xff0c;专业观众40000&#xff0c;品牌展商800&#xff0c;同期活动会议增加至50场&#xff0c;展会同期将举…

Windows版 nginx安装,启动,目录解析,常用命令

Windows版 nginx安装&#xff0c;启动&#xff0c;目录解析&#xff0c;常用命令 一级目录二级目录三级目录 1. 下载2. 启动方式一&#xff1a;方式二&#xff1a; 3. 验证是否启动4. 安装目录解析5. 常用命令 一级目录 二级目录 三级目录 1. 下载 官网下载&#xff1a;ngi…

【maven】idea执行了maven的install命令给本地安装项目依赖包 安装后删除

目录 事件起因环境和工具操作过程解决办法1、找到对应的目录下的文件&#xff0c;手动去删除&#xff0c;比如我的依赖库的路径是D:\qc_code\apache-maven-3.8.2\repository 我只需要找到这个目录下对应的依赖包进行手动删除即可&#xff08;不推荐&#xff0c;强行删除文件夹文…

技术选型不当对项目的影响与补救措施

在项目管理中&#xff0c;初期技术选型与项目需求不匹配的情况并不罕见&#xff0c;这可能导致项目延误、成本增加和最终成果的不理想。补救的关键措施包括&#xff1a;重新评估技术选型、加强团队沟通、实施有效的需求管理以及建立持续的反馈机制。其中&#xff0c;重新评估技…

基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

MySQL 8.0在windows环境安装及配置

文章目录 一、下载二、安装三、配置环境变量 一、下载 1、先彻底卸载之前的MySQL&#xff0c;并清理其 残留文件 。 2、登录网址https://www.mysql.com/ 3、点击网址左下角“中文”按钮&#xff0c;切换到中文界面 4、点击网页上方的“下载”按钮&#xff0c;然后点击网页…

【传知代码】用于图像识别的判别图正则化技术

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 论文概述图正则化技术及其优点参考文献&#xff1a; 算法流程在标准BLS中嵌入判别图正则化的方法 模型整体架构代码复现图拉普拉斯矩阵的构建—…

第二十五章 Vue父子通信之sync修饰符

目录 一、概述 二、完整代码 2.1. main.js 2.2. App.vue 2.3. BaseDialog.vue 三、运行效果 一、概述 前面的章节我们讲到&#xff0c;通过v-model我们可以实现父子组件间的通信&#xff0c;但是使用v-model的时候&#xff0c;子组件接收的prop属性名必须固定为valu…

头歌——机器学习(逻辑回归)

文章目录 逻辑回归简述代码 sklearn逻辑回归 - 手写数字识别代码 逻辑回归算法详解似然与概率的区别逻辑回归算法的代码实现代码 逻辑回归案例 - 癌细胞精准识别代码 逻辑回归简述 什么是逻辑回归 当一看到“回归”这两个字&#xff0c;可能会认为逻辑回归是一种解决回归问题的…

【高等数学】3-2多元函数积分学

1. 二重积分 可以想象你有一块不规则的平面薄板,它在一个平面区域上。二重积分就是用来求这个薄板的质量(假设薄板的面密度函数是)。 把区域划分成许多非常小的小方块(类似于把一块地划分成很多小格子),在每个小方块上,密度近似看成是一个常数,然后把每个小方块的质量加…

需求管理流程与工具:国内外10款综合评测

本文中&#xff0c;分享了10款需求管理工具&#xff1a;1.PingCode&#xff1b;2.Worktile&#xff1b;3.纷享销客&#xff1b;4.Teambition&#xff1b;5.Jira&#xff1b;6.Trello&#xff1b;7.Figma&#xff1b;8.万维需求管理&#xff1b;9.ClickUp&#xff1b;10.项目管理…

Java项目实战II基于Spring Boot的个人云盘管理系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 基于Spring Boot的个人云盘管理系统设计…

嵌入式之C语言(基础篇)

首先&#xff0c;我们要知道什么是程序。程序&#xff1a;为了让计算机执行某操作或解决某个问题而编写的一系列有序指令的集合。 一、计算机语言简史 第一代是机器语言&#xff1a;时间实在1946年&#xff0c;第一台计算机ENIAC诞生&#xff0c;用的是穿孔卡片做的&#xff0c…

搜索引擎算法更新对网站优化的影响与应对策略

内容概要 随着互联网的不断发展&#xff0c;搜索引擎算法也在不断地进行更新和优化。了解这些算法更新的背景与意义&#xff0c;对于网站管理者和优化人员而言&#xff0c;具有重要的指导意义。不仅因为算法更新可能影响到网站的排名&#xff0c;还因为这些变化也可能为网站带…

牛客周赛65(C++实现)

比赛链接&#xff1a;牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 文章目录 1.超市1.1 题目描述1.2 思路1.3 代码 2. 雨幕2.1 题目描述2.2 思路2.3 代码 3.闺蜜3.1 题目描述3.2 思路3.3 代码 4. 医生4.1 题目描述4.2 思路4.3 代码 1.超市 1.1 题目描述 …

【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信

前言 故事背景 简单说下背景&#xff0c;项目中需要用 ProtoBuf 协议转换请求参数&#xff0c;并通过 WebSocket 进行双向通信。重点&#xff01;一个是 web端&#xff08;Vue3 TS&#xff09;&#xff0c;一个是微信小程序端&#xff08;原生 JS&#xff09;。 剧情发展 …

练习LabVIEW第三十四题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第三十四题&#xff1a; 在一个波形表中显示三条随机数组成的曲线&#xff0c;分别用红&#xff0c;绿&#xff0c;蓝三种…

rnn/lstm

tip&#xff1a;本人比较小白&#xff0c;看到july大佬的文章受益匪浅&#xff0c;现在其文章基础上加上自己的归纳、理解&#xff0c;以及gpt的答疑&#xff0c;如果有侵权会删。 july大佬文章来源&#xff1a;如何从RNN起步&#xff0c;一步一步通俗理解LSTM_rnn lstm-CSDN博…