QT基于QtWebkit实现浏览器的基本知识点

11 篇文章 2 订阅

本文由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);
}

参考链接:

  1. QtWebkit各个类之间关系-QWebView-QWebPage
    http://blog.sina.com.cn/s/blog_523491650100j3td.html
  2. QtWebkit模块介绍
    http://blog.csdn.net/niu2006/article/details/6003246
  3. QtWebkit中的memorycache机制
    http://blog.csdn.net/niu2006/article/details/7757923
  4. QtWebkit(Open Source Web Browser Engine)官网:
    https://webkit.org/
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inter_peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值