`

QT运行目录(和资源文件相关)

    博客分类:
  • QT
 
阅读更多


QT Creator里,运行目录是在build目录下,而debugrelease版本运行是在自己的目录下

图片等资源文件若已加载到qrc中,则怎么执行都能被找到,注意需在资源所在的路径名前加上其所在qrc的域

对于qm翻译文件,须拷贝到执行目录

 

1. 获得工作目录

如果你对工作目录依然不熟悉,QT运行目录(和资源文件相关)使用相对路径出现问题时,请首先考虑使用下列语句:

qDebug()<<QDir::currentPath();

看看和你预想的是否相符。

 

2. 修改工作目录

你很少需要这个操作,如果你用到了,请注意

bool QDir::setCurrent ( const QString & path ) [static]

而不是

bool QDir::cd ( const QString & dirName )

       bool QDir::cdUp ()

void QDir::setPath ( const QString & path )

 

3. 程序所在目录

如何知道你程序自己在那个目录下,这是一个和平台相关的问题(ISO CC++ 目前似乎还不能告诉我们答案)。幸好Qt提供了很好的封装了:

QString QCoreApplication::applicationDirPath () [static]

如果你想使用相对路径访问和可执行程序的同目录下的文件,你可以将工作目录设置成该目录,或者(这应该是更好点的方法),用该目录和你的相对路径先直接组合成绝对路径再使用。

可是 ,你有没有这个问题:当我们在windows下使用Qt的时候,生成的可执行程序会在debugrelease目录下,我们要访问的文件在 project.pro 文件所在目录(或其子目录)下。这可怎么办是好?

 

4. 一个有用的函数

如果你想访问工程目录下的doc/dbzhang800.txt文件:

|-- project.pro

|-- doc/

|     `-- dbzhang800.txt

|

|-- release/

|     `-- abc.exe

|

`-- debug/

      `-- abc.exe

直接

QFile(doc/dbzhang800.txt);

好用么?如果在QtCreator 等环境下运行,一般可以工作,可是,进到debug下双击,却不工作了,问题的解决方案来自C++ GUI Qt4 编程一书:

QDir directoryOf(const QString &subdir)
{
    QDir dir(QApplication::applicationDirPath());
 
#if defined(Q_OS_WIN)
    if (dir.dirName().toLower() == "debug"
            || dir.dirName().toLower() == "release"
            || dir.dirName().toLower() == "bin")
        dir.cdUp();
#elif defined(Q_OS_MAC)
    if (dir.dirName() == "MacOS") {
        dir.cdUp();
        dir.cdUp();
        dir.cdUp();
    }
#endif
    dir.cd(subdir);
    return dir;
}

这个函数怎么用?我们只需要:

QFile(directoryOf("doc").absoluteFilePath(dbzhang800.txt));

 

 

分享到:
评论

相关推荐

    在Qt资源文件中包含和释放exe等各种类型文件

    在Qt开发过程中,资源文件(Resource)系统是一个强大的特性,它允许我们将各种类型的文件,如图片、音频、配置文件甚至可执行文件(exe)嵌入到应用程序的二进制文件中,无需在运行时依赖外部文件。这不仅提高了...

    vs中编写qt程序如何像qt create一样添加资源文件

    在Visual Studio(VS)环境中编写Qt程序时,与Qt Creator相比,添加资源文件的过程略有不同。Qt Creator提供了直观的图形用户界面,使得添加资源文件变得简单。而在VS中,我们需要手动配置一些步骤来实现相同的功能...

    【QT】08qt资源文件文章代码

    在QT中,资源文件(QRC文件)扮演着重要角色,为应用程序提供了一种组织和管理静态资源如图片、字体、音频文件、XML文档等的方式。资源文件的使用可以避免硬编码文件路径,使得应用程序在不同操作系统和环境下更易...

    《Qt Creator创建子目录项目并自定义目标文件输出目录》的示例代码

    总的来说,理解和掌握在Qt Creator中创建子目录项目以及自定义目标文件输出目录的方法,对于提升项目管理和开发效率至关重要。这不仅可以帮助保持代码的整洁,还能使得团队协作更为顺畅,特别是当多个开发者共同工作...

    QT实现文件资源管理器

    5. **文件操作**:QT提供了`QFile`、`QDir`等类来处理文件和目录。例如,`QFile::copy()`用于复制文件,`QDir::rename()`用于重命名,`QDir::remove()`用于删除,而`QFile::exists()`则用于检查文件是否存在。 6. *...

    Qt下显示文件及目录的Windows右键菜单

    本资源是一个Qt工程实例,专注于在Windows环境下为文件和目录添加自定义的右键菜单。 首先,我们要理解Qt库中的`QContextMenuEvent`类,这是处理鼠标右键点击事件的关键。当用户在窗口或控件上右击时,这个事件会被...

    qt将多个bin文件合成一个bin文件

    1. **分析依赖性**:首先,需要确定所有bin文件之间的依赖关系,确保合并后的bin文件在运行时能找到所有必要的资源和库。 2. **静态链接**:如果bin文件是动态链接库(DLLs),可以考虑将其转换为静态链接库(LIBs...

    qt2/bin文件目录

    QT2/bin文件目录是Qt开发框架的一个组成部分,主要用于存放可执行文件和其他运行时必要的二进制文件。在软件开发过程中,尤其是使用Qt进行图形用户界面(GUI)编程时,这个目录下的内容至关重要。当我们尝试编译或...

    QT文件资源管理器终结版

    文件资源管理器终结版会利用这些组件来展示文件和目录,允许用户进行浏览、选择、操作。 2. **文件和目录操作**:管理器支持基本的文件操作,如复制、剪切、粘贴、重命名、删除、创建新文件/目录等。这些功能通过Qt...

    【精选QSS资源】精选全网30+QSS文件资源,内含教程,直接用于QT即可

    在"【精选QSS资源】精选全网30+QSS文件资源,内含教程,直接用于QT即可"这个压缩包中,包含了多个QSS文件,这些文件可能是由社区开发者贡献或者专业设计师设计的,旨在为QT项目提供多样化的视觉风格。每个QSS文件...

    QT开发-文件(所有)读取-转二进制

    在提供的压缩包中,`readfile`可能是实现这个功能的源代码文件,而`build-readfile-Desktop_Qt_5_15_2_MinGW_32_bit-Debug`则可能是编译生成的调试目录,包含了编译后的可执行文件和其他相关资源。如果你在QT ...

    qt xlsx 6.2.4的资源文件 已全部编好,包括bin include lib mkspecs

    在使用这些资源文件时,开发者可以根据自己的需求选择合适的目录(Debug或Release),将对应的库文件路径添加到系统的环境变量中,以便于编译和运行QT程序。同时,`include`目录中的头文件将指导编写代码,而`bin`...

    windows下Qt6 使用CMake 安装时自动拷贝Qt及其他依赖文件

    3. **复制Qt库和资源文件**:为了在目标机器上运行程序,你需要把Qt库文件和依赖的动态链接库一起打包。可以使用CMake的`file(GLOB ...)`命令收集需要的文件,然后使用`install(TARGETS ... COPY_FILE ...)`或者`add...

    Qt使用QtWebApp搭建Http服务器实现文件下载

    在你的工作目录下创建一个新的Qt项目,然后创建必要的文件和目录。典型的项目结构可能如下: ``` project/ main.cpp server.h server.cpp httpServer.pro resources/ download_files/ file1.txt file2....

    QT5.13 QCH 帮助文件打包

    2. **Qt文档生成**:在创建QCH文件之前,首先需要生成Qt相关的文档。这通常通过运行`qdoc`命令行工具完成,该工具解析源代码中的docstrings(文档字符串)并生成HTML文档。 3. **QCH打包**:生成的HTML文档可以通过...

    Qt Qss三套样式文件 qss.zip

    1. 引入QSS文件:首先,你需要将压缩包解压并将其中的QSS文件(通常以`.qss`为扩展名)放置在你的项目资源目录下。然后,可以通过`QApplication::setStyleSheet`函数来加载和应用样式表。例如,如果你有一个名为`...

    QT程序如何在开发板上运行

    3. **文件系统的准备**:确保开发板上的文件系统已经支持QT所需的库文件和其他资源,这是QT程序能够正常运行的前提条件。 #### 三、具体步骤详解 1. **准备环境** - 确保ARM开发板的文件系统中已经移植好了QT相关...

    一个基于Qt的文件网络传输项目,服务器运行在linux,客户端运行在win10系统。.zip

    该项目是一个基于Qt框架实现的文件网络传输应用,服务器端运行在Linux操作系统上,而客户端则在Windows 10环境下运行。这个设计展示了跨平台应用程序开发的能力,Qt作为一个强大的C++库,提供了这样的便利性。以下是...

    可以在Winxp上运行的Qt5.5动态库

    压缩包子文件的“bin”目录通常包含可执行文件和运行库,这些文件可以直接被操作系统执行。对于Qt,这可能包括Qt的主动态链接库,如qt5core.dll、qt5gui.dll等,以及可能需要的其他组件。 “plugins”目录则可能...

    Qt Create的exe能运行的环境库文件

    6. **绿色版部署**:为便于分发,开发者通常会将exe、依赖的dll文件和资源文件打包成一个自解压的安装包或创建一个“绿色版”程序包,即解压后即可运行的文件夹。 7. **版本管理**:保持库文件与你的源代码版本一致...

Global site tag (gtag.js) - Google Analytics