QT打开文件及文件路径

这篇博客介绍了如何在Qt环境中使用QFileDialog获取文件夹路径和文件路径。通过getExistingDirectory方法可以获取用户选择的目录路径,getOpenFileName则用于获取用户选定的文件路径。博客还提供了代码示例,展示了如何在不同情况下使用这两个函数,并且提到了路径处理和文件操作的相关注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取文件夹路径
static QString getExistingDirectory(QWidget *parent = Q_NULLPTR,
const QString &caption = QString(),
const QString &dir = QString(),
Options options = ShowDirsOnly);
参数1:父窗口
参数2:弹出界面的菜单栏文字
参数3:打开的初始目录 比如“/”表示根目录

使用方法

void Widget::on_openSrcDirPushButton_clicked()
{
    //文件夹路径
    srcDirPath = QFileDialog::getExistingDirectory(
               this, "choose src Directory",
                "/");

    if (srcDirPath.isEmpty())
    {
        return;
    }
    else
    {
        qDebug() << "srcDirPath=" << srcDirPath;
        srcDirPath += "/";
    }
}

注意:
qDebug() << “srcDirPath=” << srcDirPath;输入我们打开目录的路径,比如:/mnt/hgfs,这时候如果我们要读取这个目录下的文件,此时路径应为这里写代码片/mnt/hgfs/然后加上文件名才是文件的全路径。不过或许大家用不到srcDirPath += “/”;`这一句。

获取文件路径(选择文件):
获取文件路径使用getOpenFileName即可。使用方法和getExistingDirectory类似。
static QString getOpenFileName(QWidget *parent = Q_NULLPTR,
const QString &caption = QString(),
const QString &dir = QString(),
const QString &filter = QString(),
QString *selectedFilter = Q_NULLPTR,
Options options = Options());
参数1:父窗口
参数2:弹出界面的菜单栏文字
参数3:打开的初始目录 比如“/”表示根目录
参数4:设置打开的文件类型
参数5:看代码。。。

使用方法:

void Widget::slotBtnClick()
{
    QString s = QFileDialog::getOpenFileName(
                this, "选择要播放的文件",
                "/",
                "视频文件 (*.flv *.rmvb *.avi *.mp4);; 所有文件 (*.*);; ");
    qDebug() << "path=" << s;
    if (!s.isEmpty())
    {

    }
}

另外的方法:

QString file_full, file_name, file_path;  
QFileInfo fi;  
  
file_full = QFileDialog::getOpenFileName(this);  
  
fi = QFileInfo(file_full);  
file_name = fi.fileName();  
file_path = fi.absolutePath();

void monizhuzhan::filenameInDir()
{
    //判断路径是否存在
    QDir dir(path);
    if(!dir.exists())
        return;
 
    //查看路径中后缀为.cfg格式的文件
    QStringList filters;
    filters<<QString("*.cfg");
    dir.setFilter(QDir::Files | QDir::NoSymLinks); //设置类型过滤器,只为文件格式
    dir.setNameFilters(filters);  //设置文件名称过滤器,只为filters格式
 
    //统计cfg格式的文件个数
    int dir_count = dir.count();
    if(dir_count <= 0)
        return;
 
//  //测试
//  //文件路径及名称
//  QFile outFile( "filename.txt");
//  //看能否打开
//  if(!outFile.open(QIODevice::WriteOnly | QIODevice::Append))  
//      return ;  
//  QTextStream ts(&outFile);
 
    //存储文件名称
    QStringList string_list;
    for(int i=0; i<dir_count; i++)
    {
        QString file_name = dir[i];  //文件名称
        //ts<<file_name<<"\r\n"<<"\r\n";
        string_list.append(file_name);
    }
 
}

其中注释部分可实现将文件名称存入到txt中。

总体思路:得到路径–去除路径下的无效文件–统计个数–获取文件名称

### 如何在Qt中使用相对路径打开文件 为了实现基于相对路径文件操作,在Qt应用程序中可以利用`QDir`类来处理不同平台上的目录结构差异。对于创建一个能够读取指定相对路径文件的应用程序而言,首先应设置工作目录或获取相对于可执行文件位置的路径。 当涉及到具体的操作时,可以通过如下方式构建并访问相对路径下的文件: ```cpp #include <QFile> #include <QTextStream> #include <QDebug> void readFileWithRelativePath() { QString fileName; QDir dir(QCoreApplication::applicationDirPath()); // 获取应用所在目录 // 构建相对路径 fileName = dir.relativeFilePath("LogFiles/Logfile_P_1.txt"); QFile file(fileName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { qDebug() << "Cannot open file:" << file.errorString(); return; } QTextStream in(&file); while (!in.atEnd()) { QString line = in.readLine(); qDebug() << line; // 输出每一行的内容到调试控制台 } file.close(); // 关闭文件流 } ``` 上述代码展示了如何通过`relativeFilePath()`方法获得相对于当前工作目录的目标文件路径[^2]。此函数接受绝对路径作为参数,并返回该路径相对于调用者所表示目录的一个新字符串形式的相对路径;如果给定的是已经相对的形式,则直接返回原样。 值得注意的是,在实际开发过程中可能会遇到诸如链接错误等问题,这可能是由于SDK中的libgcc库未正确安装引起的,此时应当检查环境配置以确保所有依赖项都已妥善解决[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值