QWebEngineView的更新

近期项目里使用PyQt编写界面,需要在界面上显示HTML文件,使用PyQt5.QtWebEngineWidgets.QWebEngineView控件实现。

自定义MyQWebEngineView类继承自QWebEngineView,当测试线程完成时,通过由该类实例化的对象的Update方法进行更新。

class MyQWebEngineView(QWebEngineView):
    updateSignal=pyqtSignal()

    def __init__(self):
        super(MyQWebEngineView, self).__init__()
        self.updateSignal.connect(self.loadHTML)
        self.loadHTML()#实例化时就读取一次html文件

    def loadHTML(self):
        path=''#html文件路径
        self.load(QUrl(path))

    def EmitSignal(self):
        self.updateSignal.emit()

    def Update(self):
        updateThread = threading.Thread(target=self.EmitSignal)
        updateThread.daemon = True
        updateThread.start()

使用自定义QThread也可实现相同的效果,但是无论QThread还是threading.Thread都不能直接创建线程调用QWebEngineView的load方法,需要通过信号实现,不然软件会崩溃。

如有错误,望斧正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过设置QWebEnginePage的缓存策略来实现在网页更新更新缓存,具体步骤如下: 1. 获取QWebEnginePage对象: ```cpp QWebEnginePage *page = view->page(); ``` 2. 设置缓存策略: ```cpp page->profile()->setHttpCacheType(QAbstractNetworkCache::NoCache); // 禁用缓存 page->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true); // 允许本地内容访问远程URL page->settings()->setAttribute(QWebEngineSettings::OfflineStorageDatabaseEnabled, true); // 启用离线存储数据库 page->settings()->setAttribute(QWebEngineSettings::OfflineWebApplicationCacheEnabled, true); // 启用离线Web应用程序缓存 page->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true); // 启用本地存储 ``` 其中,禁用缓存的步骤是可选的,如果需要使用缓存,可以根据具体情况进行设置。 3. 在网页更新更新缓存: ```cpp connect(page, &QWebEnginePage::loadFinished, [page]() { page->toPlainText([page](QString text) { QWebEngineScript script; script.setInjectionPoint(QWebEngineScript::DocumentReady); script.setName(QStringLiteral("cache")); script.setSourceCode(QStringLiteral("(function() {" " if (typeof localStorage === 'undefined') return;" " var key = location.href;" " if (localStorage.getItem(key) !== null) {" " localStorage.removeItem(key);" " }" " localStorage.setItem(key, document.documentElement.innerHTML);" "})();")); page->scripts().insert(script); }); }); ``` 这段代码使用了toPlainText函数来获取当前网页的HTML内容,然后使用localStorage将其存储到本地缓存中,同时删除旧的缓存。这样,每次网页更新时都会自动更新缓存。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值