2017-05-09 108 views
0

我的工作环境:Qt 5.8 MSVC2015 64位,Windows 7 64位,Web引擎,JavaScript。QT WebEngine&JavaScript无法加载.PNG图像

在QT代码中,我正在加载图像,将数据转换为QByteArray &转回到JavaScript。所以javaScript可以渲染图像。 但JavaScript无法加载.png图像,有什么线索我在这里失踪?

QT .h文件中的代码:

Q_INVOKABLE QByteArray GetTile(); 

QT .cpp文件代码:

QByteArray ExportedObject::GetTile() 
{ 
QByteArray arr; 
QFile imageFile("D:\\2.png"); 
arr = imageFile.readAll(); 
imageFile.close(); 
return arr; 
} 

JavaScript代码:

var myRetValue; 
myRetValue = window.interface.GetTile(function(returnValue) { 
     return returnValue; 
    }); 
alert (myRetValue); 
document.getElementById("ItemPreview").src = "data:image/png;base64," + returnValue; 

为什么不的returnValue获取存储在myRetValue?

+0

任何错误信息? – derM

+0

我必须承认,我对WebEngine并不了解,但是我觉得有趣的是你在'C++'中定义了一个没有参数的函数,然后你传递一个JS函数给它。 – derM

+0

当我将图像缓冲区分配给document.getElementById(“ItemPreview”)。src时,它不会加载任何图像。 – Sandy

回答

0

@derM:非常感谢您的意见。修正是将QByteArray转换为Base64。

return arr.toBase64(); 

没有Base64,我只接收NULL(/ r/n)终止的字符串。