Вы можете увидеть себя несоответствие между расположением и путем, который вы пытаетесь загрузить:
Я сохранил изображения в плате локального каталога (/ главных/изображения/система/изображении. PNG)
, а затем:
painter.drawImage(QRect(100, 50, 100, 100), QImage("home/images/system/image.png"))
Вы пропускаете водительство слэш для абсолютного пути. Почему ваша программа в настоящее время не работает, потому что программа ищет изображение относительно приложения в противоположность абсолютному пути.
Решение было бы внести небольшое исправление к вышеупомянутой линии следующим образом:
painter.drawImage(QRect(100, 50, 100, 100), QImage("/home/images/system/image.png"))
^
Однако, это просто быстрый обходной путь. В идеальном мире вы действительно не загрузили бы подобные изображения, и особенно не из разных домашних папок, чем пользователь, запускающий приложение.
Если вы использовали домашний каталог того же пользователя, вы бы не использовать жесткий кодированный путь, но следующий вариант из QStandardPaths:
QStandardPaths::HomeLocation 8 Returns the user's home directory.
Это очень плохая практика жесткого кода длинный абсолютный путь что, если это действительно необходимо, но это редкость.
В качестве альтернативы, вы можете также поместить изображение рядом с приложением, и загрузить его следующим образом:
painter.drawImage(QRect(100, 50, 100, 100),
QImage(QString("%1/image.png")
.arg(QCoreApplication::applicationDirPath()));
Согласно QCoreApplication documentation for this method.
Я, вероятно, придерживаюсь последней опции или, по крайней мере, вышеупомянутого домашнего пути без жесткого кодирования.
Конечно, вы всегда можете использовать Qt resource system, но я думаю, что в этом простом случае было бы слишком сложно, если вы не хотите, чтобы изображение было в комплекте, так что вам не нужно разворачивать его отдельно , В этом случае вы писали бы что-то вроде этого:
painter.drawImage(QRect(100, 50, 100, 100), QImage(":/image.png"));
и вы бы иметь свой файл ресурсов в .pro файле QMAKE следующим образом:
RESOURCES += myresourcefile.qrc
и файл ресурсов будет содержать что-то вроде это:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>image.png</file>
</qresource>
</RCC>
Вы должны использовать ресурсы: http://qt-project.org/doc/qt-5.0/qtcore/resources.html –
Если мы храним локальный каталог, как пройти путь? – user3167959
Проверьте это обсуждение: http://stackoverflow.com/questions/7741444/qt-how-to-access-resources –