深入理解QWebEngineView在Web集成中的应用

版权申诉
0 下载量 2 浏览量 更新于2024-10-15 收藏 998KB 7Z 举报
资源摘要信息:"QWebEngineView是一个跨平台的Web内容渲染引擎,它是基于Chromium项目的。QWebEngineView为开发者提供了一种方式,可以在使用Qt框架的应用程序中集成现代的Web技术。这个引擎支持最新的Web标准,并且能够显示复杂的网页内容,比如HTML5和CSS3,同时也支持JavaScript、SSL以及其他现代网页特性。 QWebEngineView是Qt WebEngine模块的一部分,这个模块专门为那些希望在自己的应用程序中嵌入网页内容的开发者设计。与早期的QtWebKit模块不同,QWebEngineView提供了更多的性能优化以及更好的安全性和隐私保护。Qt WebEngine模块利用Chromium的多进程架构,因此即使Web内容出现了崩溃或者运行缓慢的情况,也不会影响到宿主应用程序的稳定性。 开发者可以使用QWebEngineView来创建各种应用程序,包括但不限于以下场景: 1. 在桌面应用程序中嵌入网页,实现复杂界面元素。 2. 创建一个浏览器应用,显示Web内容。 3. 开发需要与网页内容交互的应用程序,比如一个可以运行Web应用的桌面容器。 QWebEngineView不仅提供了传统浏览器的Web内容渲染功能,还允许开发者通过Qt提供的API与Web页面进行交互。这意味着,可以编写JavaScript代码与C++代码相结合的应用程序,实现高级功能,比如离线存储、网络通信或者数据存储等。 此外,QWebEngineView支持的丰富API使得开发者可以在保持原生应用体验的同时,实现网页内容的自定义与扩展。例如,可以拦截网络请求、修改页面加载行为,甚至可以自定义用户界面元素,如浏览器的地址栏和前进后退按钮。 由于QWebEngineView是基于Chromium,因此它也继承了Chromium的一些特性,例如支持GPU加速的渲染、自动更新机制以及现代Web技术的优化。开发者可以期待在未来的Qt版本中,QWebEngineView会继续与Chromium保持同步更新,这意味着它将不断获得新的Web特性支持和安全更新。 在实际开发中,QWebEngineView可以使用多种编程语言进行操作,包括但不限于C++、Python等,这得益于Qt框架本身的跨平台特性和多语言支持。通过使用QWebEngineView,开发者可以创建出跨Windows、macOS、Linux以及其它支持Qt的平台的应用程序。 总结来说,QWebEngineView是一个功能强大的模块,它使开发者能够轻松地将Web内容集成到Qt应用程序中,同时提供了一个稳定、安全和性能优异的平台来展示和操作Web内容。"

options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 # options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败 options.binary_location = './chrome-win/chrome.exe' driver_path = Service("chromedriver.exe") driver = webdriver.Chrome(service=driver_path, options=options) # 打开网站 print('正在登录!') driver.get('http://www.weather.com.cn/jiangsu/index.shtml'),from PySide2.QtCore import * from PySide2.QtWidgets import * from PySide2.QtWebEngineWidgets import * class TabWidget(QTabWidget): def __init__(self, *args, **kwargs): QTabWidget.__init__(self, *args, **kwargs) url = QUrl("https://www.163.com") view = HtmlView(self) view.load(url) ix = self.addTab(view, "加载中 ...") self.resize(800, 600) class HtmlView(QWebEngineView): def __init__(self, *args, **kwargs): QWebEngineView.__init__(self, *args, **kwargs) self.tab = self.parent() def createWindow(self, windowType): if windowType == QWebEnginePage.WebBrowserTab: webView = HtmlView(self.tab) ix = self.tab.addTab(webView, "加载中 ...") self.tab.setCurrentIndex(ix) return webView return QWebEngineView.createWindow(self, windowType) if __name__ == "__main__": import sys app = QApplication(sys.argv) main = TabWidget() main.show() sys.exit(app.exec_()),把这两段代码整合到一起。

2023-06-08 上传

from PySide2.QtCore import * from PySide2.QtWidgets import * from PySide2.QtWebEngineWidgets import * from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options class TabWidget(QTabWidget): def init(self, *args, **kwargs): QTabWidget.init(self, *args, **kwargs) self.setup_browser() self.load_pages() def setup_browser(self): options = Options() options.add_argument('--ignore-certificate-errors') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument('--disable-gpu') options.add_argument('blink-settings=imagesEnabled=false') options.binary_location = './chrome-win/chrome.exe' driver_path = Service("chromedriver.exe") self.driver = webdriver.Chrome(service=driver_path, options=options) def load_pages(self): self.load_page("https://www.163.com", "网易新闻") def load_page(self, url, title): view = HtmlView(self) view.load(QUrl(url)) ix = self.addTab(view, title) self.setCurrentIndex(ix) class HtmlView(QWebEngineView): def init(self, *args, **kwargs): QWebEngineView.init(self, *args, **kwargs) self.tab = self.parent() def createWindow(self, windowType): if windowType == QWebEnginePage.WebBrowserTab: webView = HtmlView(self.tab) ix = self.tab.addTab(webView, "加载中 ...") self.tab.setCurrentIndex(ix) return webView return QWebEngineView.createWindow(self, windowType) if name == "main": import sys app = QApplication(sys.argv) main = TabWidget() main.show() sys.exit(app.exec_()),请优化这段代码

2023-06-08 上传