- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 QWebEnginePage 实例,它加载了一些 url(例如 https://www.google.com)
我希望此页面显示在两个 QWebEngineView 中,但看起来 Qt 不允许这样做。
一旦我在一个 View 上调用 setPage,另一个 View 就会停止呈现页面。看起来这是所有权问题或类似问题,但我在 Qt 文档中看不到任何相关信息。
还有其他人遇到过这样的问题吗?
auto p = new QWebEnginePage();
p->load(QUrl("https://www.google.com"));
auto w1 = new QWebEngineView();
auto w2 = new QWebEngineView();
w1->setPage(p);
w2->setPage(p);
w1->show();
w2->show();
我希望两个 View 显示相同的页面,但只有 w2 显示它。如果您稍后调用 w1->setPage(p)
- 页面将显示在 w1 上并从 w2 上消失。
更新。只想发表结论。- QWebEnginePage 的 view() 方法证明一对一的关系。- setPage 源代码清楚地显示“第二次它只是从第一个 View 断开连接。”- “如果当前页面是 web View 的子页面,它将被删除。” - 根本不回答我的问题。我的页面不是 WebView 的子页面,也没有被删除,只是没有像我预期的那样同时呈现。
最佳答案
QWebEnginePage
不能连接到两个 QWebEngineView
。
当您查看 Qt sources 时,您将很容易理解当您两次调用 setPage
时会发生什么。 ,请参阅那里的 setPage
函数。第二次它只是与第一个 View 断开连接。
void QWebEngineView::setPage(QWebEnginePage* page)
{
QWebEngineViewPrivate::bind(this, page);
}
void QWebEngineViewPrivate::bind(QWebEngineView *view, QWebEnginePage *page)
{
if (view && page == view->d_func()->page)
return;
if (page) {
// Un-bind page from its current view.
if (QWebEngineView *oldView = page->d_func()->view) {
page->disconnect(oldView);
oldView->d_func()->page = 0;
}
page->d_func()->view = view;
page->d_func()->adapter->reattachRWHV();
}
if (view) {
// Un-bind view from its current page.
if (QWebEnginePage *oldPage = view->d_func()->page) {
oldPage->disconnect(view);
oldPage->d_func()->view = 0;
oldPage->d_func()->adapter->reattachRWHV();
if (oldPage->parent() == view)
delete oldPage;
}
view->d_func()->page = page;
}
// skipped
}
关于c++ - 一个 QWebEnginePage 用于两个或多个 QWebEngineView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722847/
我们正在尝试将一些应用程序从 Qt 4 移植到 Qt 5.4。 Qt 5.4 有一个新的网络引擎。我们曾经把QWebView和QWebPage的背景做成透明的: view = new QWebView
我有这部分工作,但我面临几个困难: 1) 看来 QWebEnginePage 需要一个 QWebEngineView。 (请参阅此处的 setView() 方法: https://code.woboq
我使用QWebEnginePage.printToPdf方法来打印Qt 5.7中QWebEnginePage渲染的网页。但该方法仅呈现网络的一部分。 代码如下: webEngineView->page
在 Qt 的 (现已弃用) QWebPage 类中,有一个信号 contentsChanged() 每当网页的 html 内容被用户编辑页面或以编程方式更改的页面更改时调用。在较新的 QtWebEng
我在将 QWebEnginePage 连接到 fullScreenRequested 时遇到问题,我正在尝试以下方式,但它给出了错误 main.cpp:58: error: expected prim
我正在使用 QT WebEngine 框架来显示网页。我在页面加载时将 JavaScript 注入(inject)到页面中,并希望允许 JavaScript 能够访问 QT 对象。显然,要做到这一点,
我有一个使用 QWebChannel 启动 Webview 的 Qt 应用程序。 在这些 View 中,我让 JavaScript 执行一些操作,以便根据屏幕大小定位窗口/调整窗口大小。 screen
我有一个 QWebEnginePage 实例,它加载了一些 url(例如 https://www.google.com) 我希望此页面显示在两个 QWebEngineView 中,但看起来 Qt 不允
我正在尝试从 QWebEnginePage 对象中获取 html 代码。根据 Qt 引用,QWebEnginePage 对象的 'toHtml' 是异步方法,如下所示。 Asynchronous me
我正在尝试开发一个可持续的网络抓取脚本,以从网站获取所有产品的列表。产品类别链接位于网页的下拉(或可扩展)元素中。在提取 html 并使用 Beautiful Soup 将其转换为文本之前,我使用 P
本来想解决this problem , 但正如我测试过 QWebEnginePage::runJavaScript() 的行为一样,我发现我什至无法使用带有以下代码的 QWebEnginePage::
我需要从 QWebEnginePage 中检索一些 html。我在文档中找到了方法 toHtml但它总是返回一个空字符串。我试过 toPlainText 它有效,但这不是我需要的。 MyClass::
我在 PyQt5 代码中遇到错误。谁能帮我。 import sys from PyQt5.QtWidgets import QApplication from PyQt5.QtCore import
我正在尝试使用 print() 从 QWebEngineView 打印 html 文档方法和 QPrinter此方法所需的实例。 我遇到的问题是,在生成的 PDF 中,我无法选择任何可用的文本。 PD
我是一名优秀的程序员,十分优秀!