【问题标题】:QT WebEngine & JavaScript failed to load .PNG imageQT WebEngine 和 JavaScript 无法加载 .PNG 图像
【发布时间】:2017-05-09 06:25:05
【问题描述】:

我的工作环境:Qt 5.8 MSVC2015 64bit, Windows 7 64 bit, Web engine, JavaScript.

在 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 中?

【问题讨论】:

  • 任何错误信息?
  • 我必须承认,我对 WebEngine 了解不多,但我发现你在 C++ 中定义了一个不带参数的函数,然后将一个 JS 函数传递给它,这很有趣。
  • 当我将图像缓冲区分配给 document.getElementById("ItemPreview").src 时,它不会加载任何图像。
  • @derM: var myRetValue; myRetValue = window.interface.GetTile(function(returnValue) { return returnValue; });警报(myRetValue);为什么 myRetValue 没有得到 returnValue ?
  • @derM:谢谢,在你们 cmets 之后我改变了问题。

标签: javascript qt qml qt5.5


【解决方案1】:

@derM:非常感谢您的投入。修复是将 QByteArray 转换为 Base64。

return arr.toBase64();

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

【讨论】:

    猜你喜欢
    • 2021-06-29
    • 1970-01-01
    • 2020-11-04
    • 2017-10-30
    • 2019-02-06
    • 2015-04-05
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多