QT QWebKit加载HTML时的字体问题

1. 字体设置

QT QWebKit加载HTML时发现字段总是宋体,无法通过CSS控制,后查资料可以通过QWebView设置解决。

    webView = new QWebView(this);
    webView->settings()->setFontFamily(QWebSettings::StandardFont, QString::fromLocal8Bit("微软雅黑,宋体,Times New Roman"));

发现字体转换为"微软雅黑“。

通过在CSS中设置

span,div,p,a
{
  font-family:'宋体';
}

发现所有字体转换为宋体。成功!

2.中文乱码问题

2.1 QWebView加载网页后,发现中文乱码。 在页面head中加入下面语句问题解决

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="Chinese">

2.2 当前QWebView运行下面的JS语句时,中文部分为乱码,

void MainWindow::addLine()
{
    QString pushStr = "var mem={index:12,name:'sun',unit:'单位',level:'系统级',userid:'123456'}; mtdata.push(mem)";
    webView_1->page()->mainFrame()->evaluateJavaScript(pushStr);
}

通过查资料和试验,在QT项目的main函数中加入下列代码问题解决

    //防止页面出现乱码
    QTextCodec *codec = QTextCodec::codecForName("GBK");
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);

上面的语句中,资料上的代码是这样的:

#include <QTextCodec>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    //设置中文字体  
    a.setFont(QFont("Microsoft Yahei", 9));
 
    //设置中文编码
#if (QT_VERSION <= QT_VERSION_CHECK(5,0,0))
#if _MSC_VER
    QTextCodec *codec = QTextCodec::codecForName("GBK");
#else
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
#endif
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
#else
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec);
#endif
 
    return a.exec();
}

通过试验,用一GBK编码。

原文地址:https://www.cnblogs.com/myboat/p/14217162.html