私が開発しているアプリケーション (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」に配置したいと考えています。しかし、このままでは、私の演技のようにパスを構成することはできそうにありません。
EDIT : @olive のコメントの後、「なぜ '../' を使用しないのですか?」ということを明確にしたいと思います。なぜなら、アプリケーションを大量に起動してテストしている Visual Studio からは機能しないからです。実際、VS からは、「../data/Guide/guide.html」を使用します。「外部から」の場合は、「../../data/Guide/guide.html」を実行する必要があります。 .
それが(私が思うに) QApplication::applicationDirPath() が存在する理由です。しかし、私は専門家ではないので、私を責めないでください。間違いがあれば訂正してください。