请帮我写个QWebEngineView打开H5界面中的链接的交互Qt代码,实现点击链接调启系统浏览器
时间: 2024-04-07 10:29:57 浏览: 60
好的,以下是一个简单的示例:
```c++
#include <QtWidgets>
#include <QtWebEngineWidgets>
class WebEnginePage : public QWebEnginePage {
public:
bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) override {
if (type == QWebEnginePage::NavigationTypeLinkClicked) {
QDesktopServices::openUrl(url);
return false;
}
return true;
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
QVBoxLayout *layout = new QVBoxLayout(&window);
QWebEngineView *view = new QWebEngineView();
view->setPage(new WebEnginePage());
view->load(QUrl("https://www.example.com"));
layout->addWidget(view);
window.show();
return app.exec();
}
```
这里定义了一个 `WebEnginePage` 类,继承自 `QWebEnginePage`,重写了其中的 `acceptNavigationRequest` 函数。当用户点击页面中的链接时,会触发该函数,我们在其中使用 `QDesktopServices::openUrl` 函数调用系统浏览器打开链接,然后返回 false,取消当前导航请求。
在主函数中,创建了一个 `QWebEngineView` 对象和一个 `WebEnginePage` 对象,将后者设置为前者的页面。然后加载了一个示例页面,并将 `QWebEngineView` 添加到一个垂直布局中,最后显示窗口并进入事件循环。
这样,当用户点击页面中的链接时,就会在浏览器中打开链接,而不是在应用内部加载。
阅读全文