fopen(filename.c_str(), "rb");
Qtで画像リソースを使用しています。
しかしfopen
、フルパスが必要です。ファイル名が:/images/img.png
!
fopen
Qtの一部ではありません。Qt のリソース システムは、Qt クラスでのみ機能します。詳細については、アプリケーションでのリソースの使用に関する Qt ドキュメントを参照してください。
リソースに対して機能する Qt クラスは、指定されたファイル名がリソース マーカー ( :
) で始まるかどうかを最初にチェックし、そうであれば内部でリソースを検索し (物理ファイルは開かれません!)、そうでない場合は物理ファイルを開きます。リソースは、コンパイル時に (Qt リソース コンパイラを使用して) アプリケーションのソース コードに (バイトの単純な配列として) 含まれ、内部で Qt の特別なリソース リーダーを使用して読み取られることに注意してください。は物理ファイルですが、まだ物理ファイルではありません。
リソース ファイルのパス (で始まる:
) を に渡すとどうなりfopen
ますか? という名前の物理ディレクトリfopen
を読み取ろうとし、指定したサブパスをこのディレクトリで検索します。もちろん、ファイルは実行可能ファイルの一部であるため、ハードドライブにはそのようなディレクトリは存在しません。(また、リソースを使用してシークして実行可能ファイルを開き、実行可能ファイル内から手動でリソース ファイルを読み取ろうとしないでください!):
fopen
具体的な状況: 外部のイメージ リーダーを使用してイメージを読み取ろうとしていますか? Qt には独自の PNG リーダーがあります。コンストラクタを呼び出すだけQImage(QString filename)
です。