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」に配置したいと考えています。しかし、このままでは、私の演技のようにパスを構成することはできそうにありません。

EDIT : @olive のコメントの後、「なぜ '../' を使用しないのですか?」ということを明確にしたいと思います。なぜなら、アプリケーションを大量に起動してテストしている Visual Studio からは機能しないからです。実際、VS からは、「../data/Guide/guide.html」を使用します。「外部から」の場合は、「../../data/Guide/guide.html」を実行する必要があります。 .

それが(私が思うに) QApplication::applicationDirPath() が存在する理由です。しかし、私は専門家ではないので、私を責めないでください。間違いがあれば訂正してください。

4

1 に答える 1

3

を使用するだけ..です。QApplication::applicationDirPath() + "/../../data/Guide/guide.html"完全に有効なパスです!

もちろん、別の問題があります。アプリケーションがインストールされると、相対パスはおそらく再び異なります。開発中と配置後の両方で相対パスが機能するようにビジュアル スタジオでパスを構成するか、レイアウトを検出する必要があります。

于 2013-08-27T08:04:11.880 に答える