Webkit为样式滚动条提供了特殊的css属性,例如:
::-webkit-scrollbar-track {
background-color:white;
}
通常我会将这些标记放在<style>
内的<head>
标记内,但遗憾的是QWebElement似乎无法修改<head>
内的任何内容。我可以使用setHtml()
函数指定初始样式,但不能在以后修改它。是否有另一种方法可以将CSS样式应用于QWebFrame中的滚动条?
答案 0 :(得分:1)
可以使用QWebSettings::setUserStyleSheetUrl
,参见示例:
const QString path = PATH_OF_CSS_FILE;
QWebSettings *settings = QWebSettings::globalSettings();
settings->setUserStyleSheetUrl(QUrl(path));
如果动态CSS是一个字符串,您可以创建一个方法并使用QTemporaryFile
,如下所示:
void MainWindow::setStyle(const QString data)
{
QTemporaryFile file;
if (file.open()) {
const QString path = file.fileName();
QWebSettings *settings = QWebSettings::globalSettings();
settings->setUserStyleSheetUrl(QUrl(path));
}
}
用法:
setStyle("::-webkit-scrollbar-track { background-color:white;}")
如果需要加载动态文件,您可以创建一个替代方法,如下所示:
void MainWindow::setStyle(const QUrl url)
{
QWebSettings *settings = QWebSettings::globalSettings();
settings->setUserStyleSheetUrl(url);
}
答案的一部分只是其他实现的提示;
您可以在项目中使用资源(QRC)为所有QWebView
添加默认样式表,请参阅示例:
点击项目中的右键&gt;添加新...&gt; Qt> Qt资源文件&gt;输入名称&#34; resources.qrc&#34;
点击&#34; resources.qrc&#34;中的右键。 &GT;在编辑器中打开
放置名为scrollbar.css的CSS文件(css文件必须与项目位于同一文件夹中)。
将它放在&#34; main.cpp&#34;:
中#include <QWebSettings>
#include <QUrl>
...
const QString path = "qrc:/scrollbar.css";
QWebSettings *settings = QWebSettings::globalSettings();
settings->setUserStyleSheetUrl(QUrl(path));