QWebEngineView 如何调试页面

本文详细介绍如何使用QtWebEngine进行远程调试,包括设置环境变量、启动调试服务器及解决调试中遇到的document.registerElementisnotafunction错误。适用于Qt开发者及Web技术爱好者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重点是使用 方法  qputenv("QTWEBENGINE_REMOTE_DEBUGGING", "5566"); 
例子如下:
MainWindow::MainWindow(QWidget *parent) 
:QMainWindow(parent),    
ui(new Ui::MainWindow)
{    
    ui->setupUi(this);   
    qputenv("QTWEBENGINE_REMOTE_DEBUGGING", "5566");    
    QWebEngineView *en = new QWebEngineView(this);   
    en->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);     
    en->settings()->setAttribute(QWebEngineSettings::SpatialNavigationEnabled, true);   
    en->setGeometry(0,0,500,500);    
    en->load(QUrl("http://static.jszg.edu.cn/public/tongzhi.html"));
}

 

 

在谷歌浏览器里输入 http://17.0.0.1:5566 ,即可调试

 

调试QWebEngineView中的HTML时,调试页面空白,出现document.registerElement is not a function的原因和解决办法

进入远程调试的页面后没有反应,打开chrome的调试界面出现Uncaught TypeError: document.registerElement is not a function这一错误,很可能是由chrome版本问题导致,可以尝试在程序内使用另一个qwebengineview打开调试地址,或是使用低于80版本的浏览器(79版本的亲测可行),也许未来更高版本的浏览器或qt会解决这个问题

--enable-blink-features=ShadowDOMV0,CustomElementsV0

### 启用和使用 Python QWebEngineView 控制台调试 为了在 `QWebEngineView` 中启用并查看控制台调试信息,可以通过多种方式来实现这一目标。一种方法是在应用程序启动时设置环境变量以允许远程调试端口监听特定端口号。 ```cpp qputenv("QTWEBENGINE_REMOTE_DEBUGGING", "9024"); ``` 上述代码片段展示了如何通过设定环境变量的方式开启远程调试功能[^5]。当设置了这个环境变量之后,在运行应用的同时也会启动一个HTTP服务器用于提供开发者工具访问接口,默认情况下该服务会绑定到本地地址上的指定端口上。 对于集成至Python环境中,则需借助PyQt或PySide库的支持: #### 使用 PyQt 或 PySide 设置远程调试 下面是一个简单的例子说明怎样利用PyQt/PySide创建带有启用了开发者工具页面的应用程序窗口,并将其显示出来供用户操作: ```python import sys from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from PyQt6.QtCore import qputenv from PyQt6.QtWebEngineWidgets import QWebEngineView class BrowserWindow(QMainWindow): def __init__(self): super().__init__() # Enable remote debugging on port 9024 qputenv("QTWEBENGINE_REMOTE_DEBUGGING", b"9024") central_widget = QWidget(self) layout = QVBoxLayout() web_view = QWebEngineView() dev_tools_page = QWebEngineView() main_web_page = web_view.page() main_web_page.setDevToolsPage(dev_tools_page.page()) layout.addWidget(web_view) layout.addWidget(dev_tools_page) central_widget.setLayout(layout) self.setCentralWidget(central_widget) if __name__ == "__main__": app = QApplication(sys.argv) window = BrowserWindow() window.showMaximized() url_to_load = 'http://example.com' window.findChild(QWebEngineView).load(url_to_load) sys.exit(app.exec()) ``` 此脚本定义了一个名为 `BrowserWindow` 的类继承自 `QMainWindow`, 并在其初始化函数内部实现了两个主要组件——一个是用来加载网页内容的主要视图 (`web_view`);另一个是用来展示开发者工具界面(`dev_tools_page`)。这两个部件都被添加到了垂直布局管理器当中以便于管理和排列它们的位置关系[^1]。 此外还有一部分代码负责处理命令行参数解析以及事件循环执行等工作,确保整个图形化界面能够正常运作起来直到接收到退出信号为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值