2016-12-08 40 views
1

我有一個Qt Widgets項目,它使用QWebEngineView來顯示靜態HTML頁面。該頁面將顯示需要使用Qt可執行文件/安裝程序「打包」的映像。我可以使用QRC文件添加圖像並從HTML文件中引用它嗎?如何打包Qt資源中的圖像以便從靜態HTML資源訪問

我(可惜)試圖使用「qrc:/ image ...」符號訪問圖像,但我完全理解QWebEngineView顯示的嵌入式瀏覽器與項目資源無關。另一種方式?

+1

不完全明白你想要什麼,而是你可以將圖像加載到臨時文件,並把它指向一個源代碼在HTML? – ilotXXI

+0

也可能是一個很好的解決方案。只有在這種情況下,我需要將HTML +圖片部署到一些臨時位置。像lesyk的回答 – rubmz

+0

您可以使用'QTemporaryFile','QTemporaryDir'或'QDesktopServices :: TempLocation'作爲臨時位置生成工具。還有一種方法是使用Base64編碼將圖像嵌入到HTML中,但它可以使HTML變大,我不確定'QWebEngineView'支持它。 – ilotXXI

回答

1

Qt的5.6 main.cpp中:

... 
QString helpHTMLFile = QStandardPaths::writableLocation(QStandardPaths::TempLocation); 
helpHTMLFile.append(QDir::separator()); 
helpHTMLFile.append("index.html"); 
QFile(helpHTMLFile).remove(); 
QFile(":/index.html").copy(helpHTMLFile); 

QQmlApplicationEngine engine; 
engine.rootContext()->setContextProperty("pathToFile", "file:///"+helpHTMLFile); 

QString logo = QStandardPaths::writableLocation(QStandardPaths::TempLocation); 
logo.append(QDir::separator()); 
logo.append("logo.svg"); 
QFile(logo).remove(); 
QFile(":/logo.svg").copy(logo); 
... 

在HTML:

... 
<img src="logo.svg" class="loginFooterImg"> 
... 
+0

看起來像我想要做的。將檢查並返回結果 – rubmz

+0

其他選項是從網站加載圖像。 (我相信你是這麼想的。) – lesyk

+0

不是這種情況...因爲這只是一個簡單的桌面應用程序 – rubmz