我使用QWebView
来显示html页面。我使用Twitter Bootstrap 3.2作为UI框架。我发现,在FF和Chrome浏览器中查看时页面的显示方式与在我的应用程序中显示为QWebView
时页面显示方式不同。 FF和Chrome都相当类似地呈现html页面,但是在QWebView
中,即使使用的字体等也不相同。QWebView是从引导过度样式3
这导致我认为QWebView
将其自己的默认值应用于加载的html文档。
这里是如何QWebView
在我的应用程序正在instansiated:
m_viewer = new QWebView();
//Disable Reload RH mouse click on browser view
m_viewer->page()->action(QWebPage::Reload)->setVisible(false);
// set blank sheet (to prevent flicker when startup screen is shown)
m_viewer->setHtml("<html><body></body></html>");
setCentralWidget(m_viewer);
我用setHtml()
加载了新的一页。
这里是样本HTML我用它来测试所需要的功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="refresh" content="5; url=login.html" >
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Dummy Demo</title>
<style type="text/css">
body { -webkit-user-select: none; }
</style>
<link href="bootstrap-3.2.0-dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body ondragstart="return false">
<div class="container">
<div class="hero-unit">
<h1>Well, do you feel lucky Punk?!</h1>
<p>Lorem ipsum etc cetera ...</p>
</div>
<hr />
<div class="footer">
<div class="span4">© Me, myself & I 2014</div>
<div class="span4"></div>
<div class="span4"></div>
</div>
</div>
<script src="js/jquery-1.8.2.min.js"></script>
<script src="bootstrap-3.2.0-dist/js/bootstrap.min.js"></script>
</body>
</html>
我有两个问题:
有什么样Firebug的,我可以用它来检查加载的文件中
QWebView
?。否则,我如何确认已加载文档中引用的样式表和JavaScript已成功加载?有没有办法关闭
QWebView
中的所有样式默认值?
谢谢,关于设置,我可以简单地问qwebview根本不使用任何默认设置?我希望使用CSS完成所有样式 – 2014-10-12 13:40:14
我不认为标准定义了这些默认设置,所有浏览器都有默认设置。如果你想让QtWebKit使用与Chrome和FF相同的默认值,你应该可以通过调整QWebSettings来实现。可以使用http://stackoverflow.com/questions/6867254/browsers-default-css-for-html-elements中的信息,并通过QWebSettings :: setUserStyleSheetUrl将其应用到您的QWebView。字体名称也可能不会像FF和Chrome一样解析为相同的字体,这可能很难达到完美。 – jturcotte 2014-10-12 13:59:01