一、获取应用程序运行路径

假设当前运行的应用程序在

...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug\debug下,我们需要获取...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug\debug这个路径,

可以使用QCoreApplication提供的applicationDirPath()函数:

QString path = QCoreApplication::applicationDirPath();

这个函数会返回应用程序的文件路径,不包括可执行文件名。

二、获取当前工作路径

假设当前运行的应用程序在

...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug\debug下,我们需要获取...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug这个路径,可以使用QDir提供的currentPath()函数:

QString path = QDir::currentPath();

这个函数会返回当前工作路径,即应用程序当前所在的路径。

三、获取用户特定路径

1.如果需要在Qt应用程序中创建或读取用户文档,可以使用QStandardPaths提供的方法获取用户文档路径:

QString docPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);

这个函数会返回一个可用于写入用户文档的文件夹路径。需要注意的是,这个路径可能会随着不同操作系统或用户配置而有所不同。

如本人电脑返回:"C:/Users/OSP/Documents"

2.获取桌面路径

QString DesktopLocation

=QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);

  qDebug() << "DesktopLocation=" << DesktopLocation;

四、自定义路径

除了以上几个函数提供的路径外,我们还可以自定义路径。例如,如果需要在应用程序所在文件加同级路径下创建一个data文件夹,并且将数据文件存储在里面,可以使用以下代码:

QString path = QDir::currentPath() + "/data";

QDir().mkpath(path);

首先通过currentPath()获取应用程序当前所在路径,然后通过字符串拼接的方式获得data文件夹的完整路径。最后使用QDir的mkpath()函数创建该文件夹。

五、总结

在Qt中获取当前路径主要有四种方法:

使用QCoreApplication提供的applicationDirPath()函数获取应用程序运行路径。

使用QDir提供的currentPath()函数获取当前工作路径。

使用QStandardPaths提供的方法获取用户文档路径及桌面路径。

自定义路径,例如在应用程序所在路径下创建指定的文件夹。

根据具体的需求选择合适的方法即可。

六.完整代码

#include <QCoreApplication>

#include <QDebug>

#include <QStandardPaths>

#include <QDir>

int main(int argc, char *argv[])

{

    QCoreApplication a(argc, argv);

         QString path = QCoreApplication::applicationDirPath();  

         qDebug()<<path;

         QString path1 = QDir::currentPath();  

         qDebug()<<path1;

      QString docPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);

         qDebug()<<docPath;

         QString path2 = QDir::currentPath() + "/data";

         QDir().mkpath(path2);

         qDebug()<<path2;

QString DesktopLocation =

QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);

         qDebug() << "DesktopLocation=" << DesktopLocation;

    return a.exec();

}

03-03 22:00