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编码。