gpt4 book ai didi

c++ - QWebEngineView 在外部浏览器中打开

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:07 25 4
gpt4 key购买 nike

我正在将我的代码从 QtWebKit 转移到 QtWebEngine。总的来说,过渡相当顺利,但是,我被困在一个特定问题上。我使用 QWebEngineView 来显示 Google map 页面。一些放置的标记具有弹出的信息窗口,“单击此处获取更多信息”可在外部浏览器中打开链接。

使用 QtWebKit,这通过 setLinkDelegation 策略相当容易。但是,这里似乎有点复杂。我试图按照示例进行操作,但不知何故我需要在 QWebEngineView 中重新定义 QWebEnginePage。以下是我到目前为止的想法。知道如何将这一切联系起来吗?

谢谢

#ifndef MYQWEBENGINEVIEW_H
#define MYQWEBENGINEVIEW_H

#include <QWebEngineView>
#include <QDesktopServices>

class MyQWebEnginePage : public QWebEnginePage
{
Q_OBJECT

public:
MyQWebEnginePage(QObject* parent = 0) : QWebEnginePage(parent){}

bool acceptNavigationRequest(const QUrl & url, QWebEnginePage::NavigationType type, bool isMainFrame)
{
qDebug() << "acceptNavigationRequest("<<url << "," << type << "," << isMainFrame<<")";

if (type == QWebEnginePage::NavigationTypeLinkClicked)
{
QDesktopServices::openUrl(url);
return false;
}
return true;
}
};


class MyQWebEngineView : public QWebEngineView
{
Q_OBJECT
public:
MyQWebEngineView(QWidget* parent = 0);
MyQWebEnginePage* page() const;

};

#endif // MYQWEBENGINEVIEW_H

最佳答案

您不需要第二部分。试试这个:

QWebEngineView *view = new QWebEngineView();
MyQWebEnginePage *page = new MyQWebEnginePage();
view->setPage(page);

关于c++ - QWebEngineView 在外部浏览器中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35345413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com