使用getExistingDirectory()函数选择现有目录并进行指定操作
发布时间:2023-12-22 23:04:55
getExistingDirectory()函数是Qt框架中QFileDialog类的一个静态成员函数,用于获取用户选择的现有目录的路径。
该函数的原型为:
QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = QFileDialog::ShowDirsOnly)
该函数的参数意义如下:
- parent:父窗口指针,如果为nullptr,则对话框将没有父窗口
- caption:对话框的标题
- dir:对话框打开时显示的目录
- options:对话框的选项
函数返回值为用户选择的现有目录的路径,若用户没有做选择,返回空字符串。
下面是一个使用getExistingDirectory()函数的示例代码:
#include <QApplication>
#include <QFileDialog>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 选择现有目录
QString dirPath = QFileDialog::getExistingDirectory(nullptr, "选择目录", QDir::homePath());
// 如果用户未选择目录,弹出提示框并退出程序
if (dirPath.isEmpty()) {
QMessageBox::information(nullptr, "提示", "未选择目录");
return 0;
}
// 对选择的目录进行指定操作
// 例如,遍历目录下的文件
QDir dir(dirPath);
QStringList fileNames = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
foreach (const QString &fileName, fileNames) {
QString filePath = dir.absoluteFilePath(fileName);
qDebug() << filePath;
}
return app.exec();
}
上述代码中,首先使用getExistingDirectory()函数获取用户选择的目录路径,并存储在变量dirPath中。然后,判断dirPath是否为空,若为空,弹出提示框告知用户未选择目录,并退出程序。
接下来,使用QDir类创建一个目录对象dir,并通过entryList()函数获取目录下的文件列表。然后,通过遍历文件列表,使用absoluteFilePath()函数获取文件的绝对路径,并输出。
请注意,在使用getExistingDirectory()函数前,需要在.pro文件中添加QT += widgets,以确保能够使用Qt Widgets模块。
