gpt4 book ai didi

qt - 使用 QTWebKit 显示存储在内存中的网站

转载 作者:行者123 更新时间:2023-12-04 21:24:13 24 4
gpt4 key购买 nike

目前,我将 HTML、JS、CSS、图形等存储在本地硬盘上,并使用 QWebFrame::SetUrl( QUrl::fromLocalFile( "appFolder\html\index.html" )) 访问它们。 .在某些时候,我将需要对本地存储的文件进行加密,因此我正在寻找一种方法来根据请求对它们进行解密,或者将它们全部解密到内存中并以这种方式访问​​它们。

我知道我可以使用 QWebFrame::setContent( htmlData )从内存加载 HTML,以便我可以加载加密的 HTML 文件,在内存中解密它,然后以这种方式显示,但是我将如何处理当前存储在子文件夹中的其他数据(JS、CSS、图形等) ?

或者,有没有一种方法可以拦截对所有 HTML、JS、CSS 等文件的访问请求,并在加载它们时对其进行解密?

通过使用我自己的 NetworkAccessManager我可以拦截对 createRequest 的调用所以我可以看到每个文件何时被加载,但我看不到如何使用它来动态解密数据。我还可以将插槽函数连接到 finished(QNetworkReply*)信号,但此时数据已经被读取 - QIODevice的当前位置指向文件的末尾。

我将非常感谢您提供正确方向的任何建议或指示。

最佳答案

我认为在您的情况下,最好的解决方案是继承 QNetworkReply 类并在重新实现的 QNetworkAccessManager::createRequest() 中使用这个新类。功能。

通常,您应该重新实现 QNetworkReply 的下一个虚拟功能:bytesAvailable() , readData(char *data, qint64 maxSize) , close() , abort() .

例如,readData应该是以下内容:

qint64 NetworkReplyEx::readData(char *data, qint64 maxSize)
{
return m_buffer.read(data, maxSize);
}

哪里 m_buffer是已经解密的数据。

您还需要在此类中添加所有必要的逻辑以获取加密数据,解密此数据...
最后你应该手动发出 finished()在新类(class)内发出信号,所以 QWebView或其他相关类将获得解密的 html。

关于qt - 使用 QTWebKit 显示存储在内存中的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6427340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com