我可以使用applicationDirPath()来访问更高目录级别的资源吗?

时间:2013-08-27 07:30:18

标签: c++ qt

在我正在开发的应用程序中(使用C ++和Qt),我使用 QApplication :: applicationDirPath()来访问某些资源,关于应用程序的路径。

例如,由于我想从应用程序中打开HTML手册,我采用这种方式:

void MainWindow::on_actionHelp_triggered()
{
    QString link = QApplication::applicationDirPath() + "/Guide/guide.html";
    bool r = QDesktopServices::openUrl(QUrl::fromLocalFile(link));
}

如果项目的结构显示路径“ProjectName / bin / Release / Guide / guide.html”(因为.exe文件位于“ProjectName / bin / Release / AppName.exe”中),则此代码段有效。

但是,如何引用更高目录级别的资源呢?例如,我希望我的HTML文件位于“ProjectName / data / Guide / guide.html”中。但是这样,似乎不可能以我的行为方式构成路径。

编辑:在@ olive的评论之后,我想澄清一件事: “我为什么不使用'../'?” 因为它无法在Visual Studio中工作,所以我大量启动应用程序来测试它。事实上,从VS,我将使用“../data/Guide/guide.html”,当“从外面”时,我必须做“../../data/Guide/guide.html”

这就是为什么(我认为)QApplication :: applicationDirPath()存在的原因。但是,我不是专家,所以不要责怪我,纠正我的任何错误,拜托!

1 个答案:

答案 0 :(得分:3)

只需使用..即可。 QApplication::applicationDirPath() + "/../../data/Guide/guide.html"是完全有效的路径!

当然还有另一个问题。安装应用程序后,相对路径可能会再次不同。您需要在visual studio中配置路径,以便相对路径在开发期间和部署后都能工作,或者您需要检测布局。