我目前正在开发一个使用Qt 5.4的VS2013项目.公测.我使用QWebEngineView(它是基于Chromium的QWebEngine的一部分),它从Web服务器加载Javascript/HTML页面.
我想知道是否有可能为该QWebEngineView(或更常见的QWebEngine)调试javascript和HTML.
我在webengine源代码中看到了一些"devtools"的概念,也许这可能是一个解决方案.
当QML程序(例如,在这种情况下从PPA安装的以太坊)尝试
import QtWebEngine 1.0
import QtWebEngine.experimental 1.0
Run Code Online (Sandbox Code Playgroud)
然后我得到这些错误
file:////usr/share/mist/qml/views/browser.qml:5 module "QtWebEngine" is not installed
file:////usr/share/mist/qml/views/browser.qml:6 module "QtWebEngine.experimental" is not installed
Run Code Online (Sandbox Code Playgroud)
QtWebEngine在Qt 5.4中,这是我安装的
#> qmake --version
QMake version 3.0
Using Qt version 5.4.0 in /usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)
我试着自己建立QtWebEngine,但没有快乐:
#> git clone git@gitorious.org:qt-labs/qtwebengine.git
Cloning into 'qtwebengine'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
1)如果是使用Qt 5.4,它为什么没有QtWebEngine安装时安装?
2)除了自己构建之外,有没有办法安装它?
3)git clone命令有什么问题? …
Qt WebEngine此链接显示Qt WebEngine的python包装器。请Canyone告诉我如何在pyqt5环境中添加它吗?谢谢!!!
我有一个用Qt制作的应用程序,只需在Linux上安装dev依赖项就可以在不安装Qt Creator的情况下运行它,例如:
sudo apt-get install qt5-default
sudo apt-get install libqt5webkit5-dev
sudo apt-get install libqt5xmlpatterns5-dev
Run Code Online (Sandbox Code Playgroud)
我将应用程序从Qt 5.2升级到5.7,现在它使用QtWebEngine和QtWebEgineWidgets.我的问题是,当我运行qmake并为升级的应用程序生成时,我收到错误消息
Project ERROR: Unknown module(s) in QT: webenginewidgets
Run Code Online (Sandbox Code Playgroud)
我一直试图找到一种方法来安装webEngineWidgets作为Linux上的dev依赖,就像webkitWidgets一样,但我似乎无法找到办法.我已经阅读了如何在Ubuntu上安装QtWebEngine但我的问题不同,因为我不想安装Qt Creator.
有没有办法将QtWebEngineWidgets安装为dev依赖项?
在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(). 在这个方法中我们可以得到:
QNetworkAccessManager::Operation operation)const QNetworkRequest &request)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),在这个方法中我们有信息,从我们可以得到的信息
info.requestMethod) …编译Qt webengine以启用专有编解码器时遇到了很多麻烦,文档不是很清楚.我在stackoverflow上遵循了其他说明,但它不起作用.我得到的错误如下:
Project ERROR: Cannot run compiler 'cl'. Output:
===================
===================
Maybe you forgot to setup the environment?
Run Code Online (Sandbox Code Playgroud)
要么
Needs VS 2015 Update 3 with Cumulative Servicing Release or higher
Qt WebEngine will not be built.
Run Code Online (Sandbox Code Playgroud)
要么
Could not detect Windows SDK Version ('WindowsSDKVersion' environment variable is not set).
Qt Webengine on Windows requires a Windows SDK version 10.0.10586 or newer.
QtWebEngine will not be built.
Run Code Online (Sandbox Code Playgroud)
要么
Needs Visual Studio 2017 or Higher
Qt WebEngine will not be …Run Code Online (Sandbox Code Playgroud) 我已经部分工作,但我面临几个困难:
1)看来QWebEnginePage需要QWebEngineView。(请参阅此处的 setView() 方法:https://code.woboq.org/qt5/qtwebengine/src/webenginewidgets/api/qwebenginepage.cpp.html)
2) QWebEngineView 除非可见,否则不会呈现。
3) 似乎没有任何方法可以检测视图的哪些区域受到了影响。
我想确认一下新 API 是否可以做到这一点?旧的 QT WebKit API 提供了一种实现此目的的方法。
我有一个使用 OAuth 2.0 授权的应用程序(http://vk.com的音频播放器)。我所做的是实现 QtWebEngineView 对象并用它来打开授权页面。基本上,看起来目前我正在使用相当大的类来完成这么小的工作。不管怎样,我需要对我的应用程序 \xe2\x80\x94 进行静态构建,不幸的是,从我的研究中我发现人们说由于某些原因不可能静态构建依赖于 QtWebEngine 的应用程序。
\n\n这是真的?如果是这样,是否有任何替代方案 \xe2\x80\x94 也许是为 OAuth 2.0 身份验证制作的一些类?
\n\n任何帮助将非常感激!
\n我有一个使用PyQt-5.5.1的工作脚本,我现在想要移植到一个新的PyQt版本(5.7).适应大多数事情很好,但我面临两个主要问题:(1)执行(模拟)鼠标点击,(2)访问(假设:打印)当前显示的网页的html源代码分别是QWebView或QWebEngineView.
例如,我可以使用PyQt-5.5.1中的QWebView执行以下操作:
QTest.mouseClick(self.wvTest, Qt.LeftButton, QPoint(x, y))
Run Code Online (Sandbox Code Playgroud)
和
frame = self.wvTest.page().mainFrame()
print(frame.toHtml().encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
我知道有关移植到QWebEngineView但无法将C++表示法转换为可用的Python代码的文档以及此页面.
如何在PyQt-5.7中将其改编为QWebEngineView?下面是PyQt-5.5.1的一个完整工作片段,它对于新的PyQt版本失败了:
AttributeError: 'QWebEnginePage' object has no attribute 'mainFrame'当我删除大型机()时:TypeError: toHtml(self, Callable[..., None]): not enough arguments.import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication from PyQt5.QtCore import QRect, Qt, QUrl, QPoint, QEvent from PyQt5.QtTest import QTest from PyQt5.Qt import PYQT_VERSION_STRRun Code Online (Sandbox Code Playgroud)if PYQT_VERSION_STR=='5.5.1': from PyQt5 import QtWebKitWidgets else: from PyQt5 import QtWebEngineWidgets
class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.button1 = …
我正在使用 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)