:/Data/ExperimentDefaults.xlsx
のようなQRCファイルのパスから
C:/Users/Dima/YandexDisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx
のような絶対ファイルパスを受信する必要があります。
どうすればいいですか?
:/Data/ExperimentDefaults.xlsx
のようなQRCファイルのパスから
C:/Users/Dima/YandexDisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx
のような絶対ファイルパスを受信する必要があります。
どうすればいいですか?
リソースはすべてQRCファイルにまとめられており、ファイルシステムに公開されていないため、標準パスに変換することはできません。 zipファイル内のファイルにアクセスするようなものです。
このようなファイルパスで何をしたいですか? QFile
はリソースパス(":/..."
)を処理し、そのようなファイルを開くことができますが、他のファイル処理API(Cのfopen
やC++のstd::ifstream
など)は処理できません。また、同様の理由から、非Qtアプリケーションは、パラメータとして渡された場合、そのようなファイルを開くことができません。
のオプションは、あなたが含まれています:
がQFile
を使用して、Excelファイルを扱っている与えられた、あなたが持っていない限り、私は、それは努力する価値はないと思います(関連Qtのクラスを使用してそれを読んでファイルを開きますいくつかのライブラリをメモリバッファから読み込みます)。
は(あなたが1を作成するためにQTemporaryDir
を使用することができます)一時ディレクトリへのリソースコンテナの外にファイルをコピーして、そこからファイルを使用します。場合にのみことに注意して
QTemporaryDir tempDir;
if (tempDir.isValid()) {
const QString tempFile = tempDir.path() + "/yourfile.xlsx";
if (QFile::copy(":/yourfile.xlsx", tempFile)) {
// your file is now extracted to the filesystem
}
}
をtempDir
一時ディレクトリも削除されるため、ファイルも削除されます。これを回避するには、機能を無効にします(tempDir.setAutoRemove(false)
)。また、抽出したファイルを終了するときに手動で一時ディレクトリを削除します。
'qrc'自体がファイルであり、実行可能ファイルに埋め込まれ、もはやOSファイルシステムにマップされていないリソースファイルの集合です。あなたが 'qrc'ファイル内のファイルパスを見ることができるとしても、それらはすべて一つの集合的なリソースファイルに圧縮されているはずです。 – AlexanderVX
リソースファイルdir。アプリケーション自体の1つで、これは役立つでしょう:['QCoreApplication :: applicationDirPath()'](http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath)静的。私はこれを[SO:Qtアプリケーションのインストールディレクトリを見つける方法?]で見つけましたか?(http://stackoverflow.com/questions/19057482/how-to-find-the-installation-directory-of-a-qt-応用)。 – Scheff
[Qt resource doc](http://doc.qt.io/qt-5/resources.html)によれば、データがバイナリにコンパイルされているため、 –