您可以看到自己的位置,你試圖加載路徑之間的矛盾:
我有本地目錄(/ home /圖片/系統/圖像存儲在板上的圖像。 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 –