簡體   English   中英

QML圖像不會在圖像源中加載具有非ASCII字符的圖像

[英]QML image does not load image with non ASCII character in image source

我必須在基於Linux的設備上顯示USB設備的圖像。 我的USB有一個包含非ASCII字符的文件夾。 它由“?”代替 字符。

原始路徑: "file:///tmp/USB6/§§§§/Koala.jpg"

QML返回錯誤: "QML Image: Cannot open: file:///tmp/USB6/????/Koala.jpg"

如何通過此路徑加載我的圖片?

Image {
  id: mainImage
  source: iconRole
  asynchronous: true
  sourceSize.width:  screenSize_Width
  sourceSize.height:  screenSize_Height
  fillMode: Image.PreserveAspectCrop
  onSourceChanged: {
     console.log("SOURCE = ",source)
  }
}
  1. 我得到的日志: SOURCE = file:///tmp/USB6/§§§§/Koala.jpg
  2. 錯誤我正在獲取QML圖像: Cannot open: file:///tmp/USB6/????/Koala.jpg

Qt關於URL的文檔:

此外,URL可以使用RFC 3986指定的“百分比編碼”方案包含編碼字符。 這些字符將保留在url類型的屬性中,以允許QML代碼構造精確的URL值。 該規則的一個例外是目錄分隔符('/')的搶占式解碼-對這些字符進行解碼以使URL能夠正確分類。

例如,可以通過編碼文件名的字符來訪問包含“#”字符的本地文件,該文件通常被解釋為URL“ fragment”元素的開頭:

 Image { source: encodeURIComponent("/tmp/test#1.png") } 

此基本類型由QML語言提供。

它適用於這種情況。

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

將此語句放在main.cpp中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM