1

在我正在开发的应用程序中(使用 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() 存在的原因。但是,我不是专家,所以请不要责怪我并纠正我的任何最终错误,拜托!

4

1 回答 1

3

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

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

于 2013-08-27T08:04:11.880 回答