【Qt之·路径获取】

server/2024/10/18 18:25:31/

系列文章目录


文章目录

  • 前言
  • 一、使用相对路径
    • 1.1 相对路径
    • 1.2 绝对路径
    • 1.3 QDir类
    • 1.4 QFileDialog对话框
  • 二、示例
    • 2.1 示例一
  • 总结


前言

  在进行Qt开发时,经常需要获取文件的路径,如图片、音频、配置文件等。路径的获取可以通过直接指定绝对路径或者使用相对路径的方式来实现。本篇博客将介绍如何在Qt中获取文件路径的方法。


在Qt中,常用的获取路径的方法有以下几种:

一、使用相对路径

1.1 相对路径

相对路径是相对于当前工作目录的路径,可以通过qApp->applicationDirPath()来获取当前应用程序的路径。

QString path = qApp->applicationDirPath() + "/image/logo.png";

在上面的例子中,我们将图片的路径设置为当前应用程序的路径下的image文件夹中的logo.png文件。

1.2 绝对路径

绝对路径是从文件系统的根目录开始的路径,可以直接指定文件的全路径来获取。

QString path = "/home/user/image/logo.png";

1.3 QDir类

QDir类提供了一系列方法来获取文件路径。例如,通过dir.exists()方法可以判断文件或目录是否存在,通过dir.absolutePath()方法可以获取文件或目录的绝对路径。

QDir dir("/home/user/image");
if (dir.exists()) {QString path = dir.absolutePath() + "/logo.png";
}

在上面的例子中,我们首先判断了image目录是否存在,如果存在则拼接出了图片的绝对路径。

1.4 QFileDialog对话框

QFileDialog对话框提供了一个文件选择的界面,可以让用户选择文件并返回文件路径。

QString path = QFileDialog::getOpenFileName(this, "选择图片", qApp->applicationDirPath(), "图片文件(*.jpg *.png)");

在上面的例子中,我们使用了QFileDialog::getOpenFileName()方法来打开一个文件选择对话框,用户选择完文件后返回文件的路径。

二、示例

2.1 示例一

#include <QtCore/QCoreApplication>
#include <QDebug>
#include <QDir>
#include <QStandardPaths>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//获取程序所在路径QString applicationDirPath = QCoreApplication::applicationDirPath();qDebug() << "applicationDirPath=" << applicationDirPath;//程序的完整路径QString applicationFilePath = qApp->applicationFilePath();qDebug() << "applicationFilePath=" << applicationFilePath;//当前工作目录QString currentPath = QDir::currentPath();qDebug() << "currentPath=" << currentPath;//用户目录路径QString HomeLocation = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);qDebug() << "HomeLocation=" << HomeLocation;QStringList HomeLocation2 = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);qDebug() << "HomeLocation2=" << HomeLocation2[0];//我的文档路径QString DocumentsLocation = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);qDebug() << "DocumentsLocation=" << DocumentsLocation;QStringList DocumentsLocation2 = QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);qDebug() << "DocumentsLocation2=" << DocumentsLocation2[0];//桌面路径QString DesktopLocation = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);qDebug() << "DesktopLocation=" << DesktopLocation;QStringList DesktopLocation2 = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);qDebug() << "DesktopLocation2=" << DesktopLocation2[0];//程序数据存放路径QString AppDataLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);qDebug() << "AppDataLocation=" << AppDataLocation;QStringList AppDataLocation2 = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);qDebug() << "AppDataLocation2=" << AppDataLocation2[0];/*Qt5.5 中引入了另一种方法*/QString AppConfigLocation = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);qDebug() << "AppConfigLocation=" << AppConfigLocation;QStringList AppConfigLocation2 = QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);qDebug() << "AppConfigLocation2=" << AppConfigLocation2[0];//临时文件路径QString TempLocation = QStandardPaths::writableLocation(QStandardPaths::TempLocation);qDebug() << "TempLocation=" << TempLocation;QStringList TempLocation2 = QStandardPaths::standardLocations(QStandardPaths::TempLocation);qDebug() << "TempLocation2=" << TempLocation2[0];//更传统的方法是利用QDir的一个静态函数tempPath()QString tempPath  = QDir::tempPath();qDebug() << "tempPath=" << tempPath;system("pause");return a.exec();
}

总结

  总之,在进行Qt开发中,获取文件路径是一个常见的操作,根据具体需求选择合适的方法获取文件路径能够更加方便地进行文件的读取、写入、显示等操作。


http://www.ppmy.cn/server/28038.html

相关文章

Ubuntu22.04安装freecad、ODAFileConverter

一、背景 作为程序界的萌新&#xff0c;不只写代码&#xff0c;还需要临危受命看看CAD图。 手上的一份CAD图是DWG格式的&#xff0c;先得找款看DWG格式文件的软件&#xff0c;很快找到了“CAD迷你看图”&#xff0c;这款软件直接傻瓜式安装&#xff0c;不是本文重点。 本文重…

【论文阅读】ESRT-Transformer for Single Image Super-Resolution

ESRT-Transformer for Single Image Super-Resolution 论文地址摘要1. 引言2.相关工作2.1 基于 CNN 的 SISR 模型2.2 Vision Transformer Transformer 3. Efficient Super-Resolution Transformer3.1. Lightweight CNN Backbone (LCB)3.2. High-frequency Filtering Module (HF…

RMQ从入门到精通

一.概述与安装 //RabbitMQ //1.核心部分-高级部分-集群部分 //2.什么是MQ 消息队列message queue 先入先出原则;消息通信服务 //3.MQ的大三功能 流量消峰 应用解耦 消息中间件 //&#xff08;1&#xff09;人-订单系统(1万次/S)—> 人 - MQ(流量消峰,对访问人员进行排队) -…

6.k8s中的secrets资源-初识secret

目录 一、Secret 二、创建secrets资源 1.创建工作目录 2.尝试使用base64进行编码 3.声明式创建secrets资源 4.响应式创建secret 三、pod引用secret资源 1.pod资源env环境变量引用 2.pod资源volume存储卷引用secret资源 3.pod资源清单指定key引用secret 四、secret类型…

安卓手机APP开发__媒体开发部分__立体环绕声

安卓手机APP开发__媒体开发部分__立体环绕声 目录 概述 对于能力的查询 耳机的跟踪 可兼容的内容 声音的属性 禁用立体环绕声的声音 声音的格式 对立体环绕声的修改的监听

揭秘FastStone Capture

FastStone Capture 是一款广受好评的屏幕捕捉、录制及图像编辑软件&#xff0c;以其小巧的体积、强大的功能和简便的操作而著称。这款软件适用于Windows操作系统&#xff0c;是许多用户&#xff0c;尤其是像素级产品经理、内容创作者和技术文档编写者的首选工具。以下是FastSto…

【深度学习】位置编码

一、引言 Self-Attention并行的计算方式未考虑输入特征间的位置关系&#xff0c;这对NLP来说是不可接受的&#xff0c;毕竟一个句子中每个单词都有着明显的顺序关系。Transformer没有RNN、LSTM那样的顺序结构&#xff0c;所以Transformer在提出Self-Attention的同时提出了Posi…

XY_RE复现(五)

一&#xff0c;给阿姨倒一杯卡布奇诺 是一道魔改TEA加密 给出了一些初始化&#xff0c;然后输入的flag拆分&#xff0c;两两一组&#xff0c;通过for循环放入encrypt加密函数 #include <stdio.h> #define uint32_t unsigned intvoid decrypt(uint32_t *v, uint32_t *ke…