本文由Markdown语法编辑器编辑完成。
1. QtWebkit
QtWebkit是Qt对Apple公司webkit的支持而开发的库,主要包括以下几个类:
1.1 QWebDatabase
Access to HTML5 databases created with JavaScript.
1.2 QWebFrame
Represents a frame in a web page.
1.3 QWebHistory
Represents the history of a QWebPage.
1.4 QWebHistoryInterface
Interface to implement link history.
1.5 QWebHistoryItem
Represents one item in the history of a QWebPage.
1.6 QWebHitTestResult
Information about the web page content after a hit
1.7 QWebPage
Object to view and edit web documents.
1.8 QWebPluginFactory
Creates plugins to be embedded into web pages.
1.9 QWebSecurityOrigin
Defines a security boundary for web sites.
1.10 QWebSettings
Object to store the settings used by QWebPage and QWebView.
1.11 QWebView
Widget that is used to view and edit web document.
2. 基于QtWebkit开发的浏览器的问题解决
2.1 弹出窗口中当鼠标光标在input编辑框,焦点不在编辑框时键盘的退格键失效
解决方案:
在QWebview的派生类Webview中增加keyPressEvent事件,增加对需要特殊处理的按键(如:Qt::Key_Backspace或Qt::Key_Enter)相关事务的逻辑判断,分析完成后,再调用基类的keyPressEvent事件。
关于如何从QT的浏览器中寻找某一类性质的元素的方法,请参照一下链接的方法:
https://stackoverflow.com/questions/2067281/qwebview-get-content-type
具体到本案例,逻辑判断为:
void WebView::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Backspace || event->key() == Qt::Key_Back) {
QWebElementCollection collection = page()->mainFrame()->findAllElements("input[type=text]");
foreach (QWebElement element, collection) {
if (element.hasFocus()) {
QWebView::keyPressEvent(event);
return;
}
}
return;
}
QWebView::keyPressEvent(event);
}
参考链接:
- QtWebkit各个类之间关系-QWebView-QWebPage
http://blog.sina.com.cn/s/blog_523491650100j3td.html - QtWebkit模块介绍
http://blog.youkuaiyun.com/niu2006/article/details/6003246 - QtWebkit中的memorycache机制
http://blog.youkuaiyun.com/niu2006/article/details/7757923 - QtWebkit(Open Source Web Browser Engine)官网:
https://webkit.org/

本文介绍了QtWebkit的相关类及其功能,并针对基于QtWebkit开发浏览器时遇到的具体问题提供了详细的解决方案,包括如何处理弹出窗口中输入框的焦点及键盘事件等。
1553

被折叠的 条评论
为什么被折叠?



