Qt делает что-то странное с изображениями. Если вы используете только pngs, у вас никогда не будет проблем. Обработка других форматов изображений выполняется немного по-другому.
Если вы посмотрите в свой каталог Qt (где находятся все двоичные файлы и исходный код), вы найдете каталог с именем: plugins\imageformats
В этом каталоге есть тонна dlls
(или .so
) по одному для каждого формата изображения, поддерживаемого Qt. В вашем случае я полагаю, что вас интересует qjpeg4.dll
Теперь, когда вы запустите ваше приложение и попытаетесь использовать jpeg
, Qt попытается загрузить этот плагин, но если он не сможет его найти, ваше изображение не будет отображаться.
У нас была похожая проблема с файлами ico. Он работал в нашей среде разработки, потому что папка Qt была в нашем PATH,
, и поэтому он волшебным образом нашел этот плагин. Однако, когда мы выпускали наше программное обеспечение, мы распространяли только те библиотеки, которые нам были нужны, и поэтому оно не работало.
После долгих расследований вот что мы сделали:
Наше приложение находится в каталоге bin /. Это где exe, и все библиотеки Qt помещены. QtCore4.dll
и QtGui4.dll
и т.д ...
В каталоге bin мы создаем подкаталог с именем 'imageformats'
Положите qjpeg4.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
.