标签: qtwebengine

从QWebEngineView或QWebEnginePage中删除ScrollBars

有没有办法删除滚动条,QWebEngineView或者我可以以某种方式访问​​它的ScrollArea?

使用webkit就像它一样简单

WebView->page()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
WebView->page()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
Run Code Online (Sandbox Code Playgroud)

但我没有在QWebEngine中看到任何类似的功能.我甚至没有在qwebengine来源中看到任何滚动区域.有什么东西我不见了吗?

更新:我想我可以尝试强制滚动条从某些通过页面传递给铬的CSS设置中消失

qt qt5 qtwebengine

9
推荐指数
2
解决办法
3931
查看次数

使用QWebEngine渲染图像

我想QWebKitQWebEngine无头渲染器代替.我初始化页面load()并连接一个插槽loadFinished()以生成最终的.PNG图像.这曾经工作得很好,WebKit但失败了QWebEngine.

代码如下......

_webView = new QWebEngineView();

....

// Render the HTML to an image
QPainter painter(&image);
_webView->page()->view()->render(&painter);
painter.end();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"请求没有窗口句柄的窗口小部件的共享上下文""QOpenGLWidget:如果没有与toplevel共享的上下文,则不能使用".

有没有人有使用渲染屏幕的例子QWebEngine

qt headless-browser qwebkit qtwebengine

8
推荐指数
2
解决办法
3364
查看次数

Qt5.6中的跨平台webview

在Windows 10 64x上使用Qt 5.6和MinGW来开发跨平台应用程序(桌面+移动).

在Qt 5.5中,我可以使用WebKit制作一个跨平台应用程序,用于在我的应用程序中显示网页,我可以在Windows,Android,iO上使用它...今天,我意识到我们不能再使用它了,我们可以"T使用QtWebView既不适用于Windows,也不能使用QtWebEngine与MinGW的.

因此,我很困惑:知道我想使用我当前的配置显示网页(对于Android桌面和移动版本),我该怎么办?

是否有希望它将在下一个Qt版本中得到解决?

编辑: 即使我想运行Qt特殊webview(minibrowser)示例,它也会显示qmake错误:

Project ERROR: Unknown module(s) in Qt: webenginewidgets
Project ERROR: Unknown module(s) in Qt: webview
Run Code Online (Sandbox Code Playgroud)

mingw qtwebkit qwebview qt5 qtwebengine

8
推荐指数
1
解决办法
4527
查看次数

如何在QtWebengine中加载Chrome扩展程序

有没有办法在基于QtWebengine的浏览器中加载/安装chrome扩展.

c++ qt google-chrome-extension qtwebengine

8
推荐指数
1
解决办法
633
查看次数

使用QtWebEngine在Qt中将C++对象暴露给Javascript

使用QtWebkit,可以通过/sf/answers/1447950171/中的QWebFrame::addToJavaScriptWindowObject描述将C++对象公开给Javascript.

使用QtWebEngine可以在Qt 5.4中完成同样的事情吗?

javascript c++ qt qtwebkit qtwebengine

7
推荐指数
1
解决办法
5610
查看次数

QWebEnginePage中的透明背景

我们正在尝试将一些应用程序从Qt 4移植到Qt 5.4.Qt 5.4有一个新的Web引擎.我们曾经制作透明背景QWebViewQWebPage透明:

view = new QWebView(this);
QPalette palette = view->palette();
palette.setBrush(QPalette::Base, Qt::transparent);
view->page()->setPalette(palette);
view->setAttribute(Qt::WA_OpaquePaintEvent, false);
Run Code Online (Sandbox Code Playgroud)

但是这个代码不适合工作QWebEngineViewQWebEnginePage.关键是QWebEnginePage没有像这样的API setPalette.

谁能找到解决这个问题的方法?

c++ qt transparent qt5.4 qtwebengine

7
推荐指数
2
解决办法
2383
查看次数

用C++运行QtWebEngine

我是第一次尝试Qt并且想要创建一个加载网站的非常基本的应用程序.我想使用Qt WebEngine.

这是我的helloworld.pro:

TEMPLATE = app
TARGET = hello
DEPENDPATH += .
INCLUDEPATH += .

QT += webenginewidgets

SOURCES += hello.cpp
Run Code Online (Sandbox Code Playgroud)

这是我的hello.cpp

#include <QApplication>
#include <QtWebEngineWidgets/QtWebEngineWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWebEngineView *view = new QWebEngineView(parent);
    view->load(QUrl("http://qt-project.org/"));
    view->show();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

在尝试编译时,我收到错误:

Project ERROR: Unknown module(s) in QT: QWebEngineView
Project ERROR: Unknown module(s) in QT: webenginewidgets
Run Code Online (Sandbox Code Playgroud)

我想我知道它找不到模块,但是查看qt文档似乎是包含它们的正确方法.

我在Qt 5.5.0上运行QtCreator 3.4.2.

c++ qt qt-creator qtwebengine

7
推荐指数
1
解决办法
9498
查看次数

Qt QWebEngine 远程调试:Chrome 开发人员工具不再有效

最近在一些软件更新(自动 Windows 10 更新,可能还有 Chrome 自动更新)之后,用于从 Qt 的 QWebEngine 进行远程调试的开发人员工具停止工作。JavaScript 控制台显示:

Uncaught TypeError: document.registerElement is not a function
    at Object.UI.registerCustomElement (shell.js:formatted:18064)
    at shell.js:formatted:18178
    at shell.js:formatted:18266
devtools_app.js:formatted:2606 Uncaught ReferenceError: SDK is not defined
    at devtools_app.js:formatted:2606
Run Code Online (Sandbox Code Playgroud)

有问题的代码(来自 shell.js)是这样的:

UI.registerCustomElement = function(localName, typeExtension, prototype) {
    return document.registerElement(typeExtension, {
        prototype: Object.create(prototype),
        extends: localName
    });
}
Run Code Online (Sandbox Code Playgroud)

什么是 shell.js,它来自哪里?这个问题的原因可能是什么?

该网页实际上是在 Qt 5.12.3 网络浏览器中运行的,但我使用 Chrome(远程)作为开发者工具。

我也同时将 Angular 7.x 升级到 Angular 8,但不再相信这是相关的。

我的 Chrome 当前版本为 80.0.3987.116(官方版本)(64 位)。

更新 我刚刚尝试下载旧版本的 Chromium。(我尝试了 77.0.3823.0 版,因为这可以追溯到 2019 年年中。)并且在那里调试有效。

qt qtwebengine angular

7
推荐指数
1
解决办法
2249
查看次数

如何使用 QWebEngine 拦截 HTML 请求?

QtWebKit我们可以使用QNetworkAccessManager,像?

class NetworkAccessManager : public QNetworkAccessManager
{
public:
    explicit NetworkAccessManager(QNetworkAccessManager *manager, QObject *parent);
protected:
    QNetworkReply * createRequest(QNetworkAccessManager::Operation operation,const QNetworkRequest &request, QIODevice *device);
};
Run Code Online (Sandbox Code Playgroud)

我们可以实施QNetworkReply * createRequest(). 在这个方法中我们可以得到:

  1. 操作 ( QNetworkAccessManager::Operation operation)
  2. 请求 ( const QNetworkRequest &request)
  3. 一些数据 ( QIODevice *device)

从请求中我们可以得到url,从“一些数据”中我们可以从html中得到一些数据(我不知道如何调用“一些数据”,所以我称之为“一些数据”)。

QtWebEngine我们可以使用QWebEngineUrlRequestInterceptor获取操作和 url,如:

class WebUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
{
public:
    WebUrlRequestInterceptor(QObject *p = Q_NULLPTR);
    void interceptRequest(QWebEngineUrlRequestInfo &info);
    ~WebUrlRequestInterceptor();
};
Run Code Online (Sandbox Code Playgroud)

我们可以实现 interceptRequest(QWebEngineUrlRequestInfo &info),在这个方法中我们有信息,从我们可以得到的信息

  1. 操作 ( info.requestMethod) …

c++ qt qtwebengine

6
推荐指数
0
解决办法
582
查看次数

是否可以在屏幕外渲染 QWebEnginePage/QWebEngineView?

我已经部分工作,但我面临几个困难:

1)看来QWebEnginePage需要QWebEngineView。(请参阅此处的 setView() 方法:https://code.woboq.org/qt5/qtwebengine/src/webenginewidgets/api/qwebenginepage.cpp.html

2) QWebEngineView 除非可见,否则不会呈现。

3) 似乎没有任何方法可以检测视图的哪些区域受到了影响。

我想确认一下新 API 是否可以做到这一点?旧的 QT WebKit API 提供了一种实现此目的的方法。

qt5 qtwebengine qwebengineview qwebenginepage

6
推荐指数
1
解决办法
1756
查看次数