gpt4 book ai didi

qt5 - 是否可以在屏幕外呈现 QWebEnginePage/QWebEngineView?

转载 作者:行者123 更新时间:2023-12-03 23:53:34 25 4
gpt4 key购买 nike

我有这部分工作,但我面临几个困难:

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

2) QWebEngineView 似乎不会呈现,除非它是可见的。

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

我想确认这是否可能与新 API 相关?旧的 QT WebKit API 提供了一种方法来做到这一点。

最佳答案

是的,有可能,

Scene = std::make_unique<QGraphicsScene>();
HiddenView = std::make_unique<QGraphicsView>(mScene.get());

WebView = std::make_unique<QWebEngineView>();
Scene->addWidget(mWebView.get());

WebView->resize(size); //any QSize you like
WebView->load(url); // give your url here

mWebView->show(); //this doesn't actually show, just enables you to render offscreen, see below

ImageData = QImage(size, QImage::Format_ARGB32);

connect(mWebView.get(), &QWebEngineView::loadFinished, this, &ClassA::onViewLoaded);
然后,在 onViewLoaded 中,我们调用 update() 方法以定期渲染。请注意,'this' 是 ClassA 的对象。
void ClassA::onViewLoaded(){
Timer = std::make_unique<QTimer>();
connect(mTimer.get(), &QTimer::timeout, , &SpaOffscreenRender::update);
mTimer->start(30); //every 30 miliseconds
}
最后你像这样渲染:
void ClassA::update()
{
QPainter painter(&ImageData);
WebView->page()->view()->render(&painter);
painter.end();
}
ImageData 有你想要的 :)

关于qt5 - 是否可以在屏幕外呈现 QWebEnginePage/QWebEngineView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53524652/

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