热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Webkit之Port类(ChromeClientQt类)

##需要Port的类ChromeClientQt:实现宿主窗口、刷新窗口、内容、滚动条、滚动、坐标转换、页面Size变迁、布局更新、窗口页面Size、焦点、获取焦点
## 需要Port的类
ChromeClientQt:实现宿主窗口、刷新窗口、内容、滚动条、滚动、坐标转换、页面Size变迁、
布局更新、窗口/页面Size、焦点、获取焦点、创建/关闭窗口、窗口显示、模式显示
工具栏/状态栏/状态文本/滚动栏/菜单栏、size可变、运行alert/prompt/confirm、
是否可中断js。mouseover事件、打印、创colorChooser/dateChooser
创popup菜单、创Search弹出栏、请求全屏
=======================================================================================================
Chrome析构
ChromeClient->chromeDestoryed()
ChromeClientQt:关闭eventLoop
=======================================================================================================
Chrome:设置窗口Rect
ChromeClient->setWindowRect()
ChromeClientQt:通知QWebPage发生位置变化的请求
=======================================================================================================
Chrome:设置focus()
ChromeClient->setFocus()
ChromeClientQt:通知QWiget进行focus操作,具体的Qt平台(QApplication/QWiget/InputContext相互作用)
=======================================================================================================
Chrome:createWindow()
ChromeClient:createWindow()
ChromeClientQt:m_webPage->createWindow(features.dialog ? QWebPage::WebModalDialog : QWebPage::WebBrowserWindow);
=======================================================================================================
void ChromeClientQt::runModal()
>>建立QEventLoop
=======================================================================================================
void ChromeClientQt::setToolbarsVisible(bool visible)
>>通知QWebPage工具栏状态改变
=======================================================================================================
void ChromeClientQt::addMessageToConsole(
>>m_webPage->JavascriptConsoleMessage(x, lineNumber, y);
=======================================================================================================
void ChromeClientQt::closeWindowSoon()
>>m_webPage->mainFrame()->d->frame->loader()->stopAllLoaders();
>>emit m_webPage->windowCloseRequested();
=======================================================================================================
void ChromeClientQt::runJavascriptAlert(Frame* f, const String& msg)
>>m_webPage->JavascriptAlert(webFrame, x);
=======================================================================================================
void ChromeClientQt::setStatusbarText(const String& msg)
>>emit m_webPage->statusBarMessage(x);
=======================================================================================================
void ChromeClientQt::scroll(const IntSize& delta, const IntRect& scrollViewRect, const IntRect&)
>>platformPageClient()->scroll(delta.width(), delta.height(), scrollViewRect);
>>emit m_webPage->scrollRequested(delta.width(), delta.height(), scrollViewRect);
=======================================================================================================
IntRect ChromeClientQt::windowToScreen(const IntRect& rect) const
>>screenRect.translate(ownerWidget->mapToGlobal(QPoint(0, 0)));
=======================================================================================================
void ChromeClientQt::mouseDidMoveOverElement(const HitTestResult& result, unsigned)
>>emit m_webPage->linkHovered(lastHoverURL.prettyURL()...)
=======================================================================================================
void ChromeClientQt::print(Frame* frame)
>>emit m_webPage->printRequested(QWebFramePrivate::kit(frame));
=======================================================================================================
FullScreenVideoQt* ChromeClientQt::fullScreenVideo()
>>m_fullScreenVideo = new FullScreenVideoQt(this);
=======================================================================================================
void ChromeClientQt::enterFullscreenForNode(Node* node)
>>fullScreenVideo()->enterFullScreenForNode(node);
void ChromeClientQt::exitFullscreenForNode(Node* node)
>>fullScreenVideo()->exitFullScreenForNode(node);
=======================================================================================================
QWebSelectMethod* ChromeClientQt::createSelectPopup() const
>>QWebSelectMethod* result = m_platformPlugin.createSelectInputMethod();
=======================================================================================================
PassRefPtr ChromeClientQt::createPopupMenu(PopupMenuClient* client) const
>>return adoptRef(new PopupMenuQt(client, this));
=======================================================================================================
PassRefPtr ChromeClientQt::createSearchPopupMenu(PopupMenuClient* client) const
>>return adoptRef(new SearchPopupMenuQt(createPopupMenu(client)));
=======================================================================================================


推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
author-avatar
海峡整形美容医院少校
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有