Qt は、画像に対して少し奇妙なことを行います。png のみを使用している場合は、問題はありません。他の画像形式の処理は少し異なります。
Qt ディレクトリ (すべてのバイナリとソースがある場所) を見ると、次のディレクトリが見つかります。 plugins\imageformats
そのディレクトリには、Qt がサポートする画像形式ごとに大量のdlls
(または) があります。.so
あなたの場合、あなたが興味を持っているのはqjpeg4.dll
ここで、アプリケーションを実行して を使用しようとするとjpeg
、Qt はこのプラグインをロードしようとしますが、見つからない場合は画像が表示されません。
ico ファイルにも同様の問題がありました。Qtフォルダーが私たちの中にあったため、開発環境で機能し、PATH,
魔法のようにこのプラグインを見つけました。しかし、ソフトウェアをリリースする際には、必要な dll のみを配布していたため、機能しませんでした。
多くの調査の後、これが私たちがしたことです:
アプリケーションは bin/ ディレクトリにあります。これは、exe とすべての Qt dll が配置される場所です。 QtCore4.dll
などQtGui4.dll
...
bin ディレクトリの下に、というサブディレクトリを作成します。'imageformats'
Putqjpeg4.dll
および必要なその他の画像プラグイン。
コードを次のように変更します。
QApplication _App(argc, argv);
// Find the path of your bin directory - whereever your exe resides.
QString _Path = _PathToBin + QString(QDir::separator()) + "imageformats");
// This line is providing a path to Qt telling it to look here for plugins
QApplication::addLibraryPath(_Path);
// Initialize the main form
return _App.exec();
これにより、Qt がjpeg
処理プラグインを認識し、UI
.