Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 960|回复: 0
打印 上一主题 下一主题

WebEngineView

[复制链接]

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
跳转到指定楼层
楼主
发表于 2023-9-18 18:32:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void WebEngineView::setHtml(const QString& html, const QUrl& baseUrl)
{
        //m_widgetSize = this->size();//QWebEnginPage的setHtml存在一个问题,如果加载的html内容较少,则窗口大小会固定为一个很小的尺寸,影响了客户端布局,所以在sethtml之前先把原尺寸保存,之后再设置回来
        auto s = html.size();
        QString tmpHtml = html;

        //tmpHtml.replace("src=\"//", "src=\"https://"); // 保存本地html后  图片资源会从本地加载 造成卡顿 替换为网络加载
        //if (s > 200000)
        if (true)//程序运行时如果调了load接口和setHtml接口,则eventfileter会失效,所以只能统一调load接口避开这个坑
        {
                QString tmpPath(MakeUniqueDir(AppDataDir("mailreader")));
                QString mailHtmlPath = tmpPath + "mailreader.html";
                QFile f(mailHtmlPath);
                QTextStream out(&f);

                bool openRes = f.open(QIODevice::WriteOnly);
                if (openRes)
                {
                        auto writeRes = f.write(tmpHtml.toUtf8());
                        if (writeRes == -1)
                        {
                         qCritical() << "WRITE TEMP MAIL CONTENT FILE FAILD," << "FILE PATH IS: " << mailHtmlPath;
                        }
                        else
                        {
                         f.close();

                         QUrl url = QUrl::fromLocalFile(mailHtmlPath);
                         load(url);
                         //m_qWebEngineView->setHtml(html, baseUrl);
                        }


                }
                else
                        qCritical() << "OPEN TEMP MAIL CONTENT FILE FAILD," << "FILE PATH IS: " << mailHtmlPath;
        }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-22 16:51 , Processed in 0.057676 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表