欢迎访问宙启技术站
智能推送

使用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模块。