标签: qtwebengine

QML WebEngineView 轻弹内容

我正在尝试使用 QML 和 WebEngineView 组件为 Ubuntu 14.04 的桌面制作一个简单的网络浏览器。该应用程序将在带有触摸板的设备上运行,因此最好使 WebEngineView 中显示的内容可滑动。

我试图这样做,但它不起作用:

...    
        WebEngineView {
            id: webView
            url: "http://google.com"
            width: parent.width
            height: winternet.height-navigationBar.height-iStatusBar.height-iBackButton.height
            anchors.top: navigationBar.bottom

            MouseArea {
                anchors.fill: parent
                drag.target: parent.data
            }

            onLinkHovered: {
                webView.url = hoveredUrl
            }
       }
...
Run Code Online (Sandbox Code Playgroud)

如果您对此有任何想法或经验,请提供帮助!

qt qml flickable qtwebengine

5
推荐指数
1
解决办法
2083
查看次数

使用 QtWebEngine 在屏幕外渲染网页内容

我正在尝试将使用 QtWebKit 呈现 Web 内容的应用程序移植到使用 QtWebEngine 的应用程序。

我在架构上可以更改的内容有限,因此我必须坚持当前渲染页面的方法,捕获到内存缓冲区,然后将其移动到另一个进程,其中缓冲区用作 OpenGL 中的纹理。

我已经尝试通过用 WebEngine 替换 WebKit 来移植代码(从广义上讲),但是 API 是不同的。

谁能告诉我这是否可能?如果是这样,请为我指出正确的方向,以说明如何将所有内容连接起来。

qt qtwebkit qt5.4 qtwebengine

5
推荐指数
1
解决办法
1681
查看次数

如何在QWebengine中从Javascript调用C++/Qt函数?

我看过关于QWebChannel的Qt示例.

但它是一个C/S应用程序.顺便说一句,它在我的电脑上不起作用(OS X 10.10.5,Qt5.5).

我的所有HTML内容都来自本地磁盘.我不认为它需要套接字的东西.

new QWebChannel(navigator.qtWebChannelTransport, function(channel) {
    // all published objects are available in channel.objects under
    // the identifier set in their attached WebChannel.id property
    var foo = channel.objects.foo;
    // access a property
    alert(foo.hello);
    // connect to a signal
    foo.someSignal.connect(function(message) {
        alert("Got signal: " + message);
    });
    // invoke a method, and receive the return value asynchronously
    foo.someMethod("bar", function(ret) {
        alert("Got return value: " + ret);
    });
});
Run Code Online (Sandbox Code Playgroud)

没有

navigator.qtWebChannelTransport

这样的事情,JS停在那里.

我应该用第一个参数填写什么?


javascript c++ qt qtwebengine

5
推荐指数
1
解决办法
1359
查看次数

QtWebEngine:iframe 的“不允许加载本地资源”,如何禁用网络安全?

我正在将我的应用程序从 WebKit 移植到 WebEngine(似乎它更适合呈现 angular-basad html)。我遇到了无法启用 QtWebEngine 加载本地 iframe 的问题,尽管我已经设置了我发现的所有可能的设置:

mainwindow.cpp 中的代码

view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->page()->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);

view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
view->settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true);
Run Code Online (Sandbox Code Playgroud)

最简单的例子是采用基于 WebEngine 的 FancyBrowser (\Examples\Qt-5.4\webenginewidgets\fancybrowser) 并尝试在其中加载本地 html 文件,如下所示:

索引.html:

<html>
<head>
    <title>Hi there</title>
</head>
<body>
    This is a page
    a simple page
    <iframe id="some_idrame" width="0" height="0" style="border: none" src="some_iframe.html" name="target" sandbox="allow-scripts"></iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

some_iframe.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>La-la-la</title>
</head>
<body>
    Lalala 
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果您将 env var QTWEBENGINE_REMOTE_DEBUGGING 设置为某个端口,那么您可以打开 127.0.0.1:port 并在控制台中看到此错误:

"Not allowed …
Run Code Online (Sandbox Code Playgroud)

html javascript qtwebengine

5
推荐指数
1
解决办法
4438
查看次数

如何从 QWebEnginePage 获取网站内容?

我安装了最新版本的 Qt(在 Webkit 上,Qt5.2 有 WTFcrash)。我尝试在页面加载时获取我网站的内容(确实如此):

QString sHtml;
view.page()->toHtml([&](const QString& result){sHtml = result;qDebug() << result;});
Run Code Online (Sandbox Code Playgroud)

但是sHtml是空的,并且没有调用调试。我究竟做错了什么?

c++ qt qt5 qtwebengine qt5.6

5
推荐指数
1
解决办法
3141
查看次数

QWebView::settings()-&gt;setUserStyleSheetUrl() 从 QtWebKit 到 QtWebEngine?

我正在将我的代码从 Qt 5.5 升级到 Qt 5.6,但我没有找到移植以下代码的方法:

QWebEngineView *qwebview = new QWebEngineView(this);
qwebview->settings()->setUserStyleSheetUrl(QUrl("qrc:/about.css"));
qwebview->setHtml(fileContentStr);
Run Code Online (Sandbox Code Playgroud)

使用新的 Qt Web 引擎插入用户 CSS 的最佳方法是什么?

css c++ qt qtwebkit qtwebengine

5
推荐指数
1
解决办法
1879
查看次数

Qt Webengine渲染打印

有没有办法使用QtWebEngine将HTML/SVG渲染到打印机,PDF和光栅图像?

我们想要从WebKit切换到WebEngine,因此使用WebKit的QWebView不再是一个选项.

windows qt render qtwebengine

5
推荐指数
1
解决办法
2883
查看次数

QtWebEngine 依赖应用程序的静态构建

我有一个使用 OAuth 2.0 授权的应用程序(http://vk.com的音频播放器)。我所做的是实现 QtWebEngineView 对象并用它来打开授权页面。基本上,看起来目前我正在使用相当大的类来完成这么小的工作。不管怎样,我需要对我的应用程序 \xe2\x80\x94 进行静态构建,不幸的是,从我的研究中我发现人们说由于某些原因不可能静态构建依赖于 QtWebEngine 的应用程序。

\n\n

这是真的?如果是这样,是否有任何替代方案 \xe2\x80\x94 也许是为 OAuth 2.0 身份验证制作的一些类?

\n\n

任何帮助将非常感激!

\n

qt static-linking oauth-2.0 qtwebengine

5
推荐指数
1
解决办法
1954
查看次数

如何使用 QWebEngine 在同一窗口中打开任何链接(_blank)

我正在使用 QWebEngine 在 Python PyQt5 中开发一个 Web 浏览器。一切工作正常,但是当有人单击空白目标链接时,它显示为空白。我想在同一窗口中打开所有类型的链接。

如果我们右键单击并“关注链接”,那么它可以工作,但是当我们简单地单击该链接时,它就不起作用。

_blank 目标链接也应该在同一窗口中打开,而不是在 newtab 中打开

<a href='https://google.com' target='_blank'>test</a>
Run Code Online (Sandbox Code Playgroud)

这是我的代码

from PyQt5.QtWebEngineWidgets import *
from PyQt5 import QtCore, QtGui, QtWidgets, QtWebEngineWidgets    
class MainWindow(QMainWindow):
    def createWindow(self, wintype):
        return self
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)

        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("http://androidd.pw/Login/"))
        QWebEnginePage.JavascriptCanOpenWindows:True
        self.browser.geolocation:True
        self.browser.autoGrantPermissions:True
        self.browser.urlChanged.connect(self.update_urlbar)
        self.browser.urlChanged.connect(self.page_loading)
        self.browser.loadFinished.connect(self.update_title)
        self.setCentralWidget(self.browser)
        self.status = QStatusBar()
        self.setStatusBar(self.status)
        #self.browser.HighlightAllOccurrences('hello world')
        self.setCentralWidget(self.browser)  

    def update_urlbar(self, q):
        ###################################################################################
        url = q.host()

        #http://ipackersmovers.com/API/url/general?url=http://www.firsttecnology.us


        with urllib.request.urlopen("http://androidd.pw/API/url/general?url="+url) as pyxis_url:pyxis = pyxis_url.read()
        with urllib.request.urlopen("http://androidd.pw/API/url/ads?url="+url) as dom_url:ad = dom_url.read() …
Run Code Online (Sandbox Code Playgroud)

python pyqt hyperlink pyqt5 qtwebengine

5
推荐指数
1
解决办法
1568
查看次数

创建 QApplication 后如何导入 QtWebEngineWidgets

我正在尝试解决这个错误:

必须在创建 QCoreApplication 实例之前导入 QtWebEngineWidgets。

这是不言自明的,但我试图制作一个在 iPython 中使用的 GUI,它可以在创建 QApplication 实例后导入。

如何解决此错误并创建一个 PyQt5 GUI,该 GUI 可以显示 HTML 页面,并且即使在用户使用 QApplication 实例(例如通过 matplotlib)后也能够导入?

我尝试了这个但仍然得到相同的错误:

from PyQt5 import QtWidgets
import seaborn as sns
sns.boxplot([1],[1])
QtWidgets.QApplication.instance().quit()
from PyQt5 import QtWidgets, QtWebEngineWidgets
Run Code Online (Sandbox Code Playgroud)

python ipython importerror pyqt5 qtwebengine

5
推荐指数
1
解决办法
3849
查看次数