qt - 使用 QWebPage 创建整个页面屏幕截图

标签 qt qwebpage

我正在使用 Qt(带有 Qt 创建者的精美浏览器示例)使用此代码创建网页的屏幕截图(从 here 获取并转换):

QImage *image = new QImage(view->page()->mainFrame()->contentsSize(), QImage::Format_ARGB32);
QPainter *painter = new QPainter(image);

view->page()->mainFrame()->render(painter);

painter->end();
image->save(view->title() + "png");

但它只创建页面可见部分( View 端口)的屏幕截图。

如果我在开头添加这一行,则会从整个页面创建屏幕截图,但问题是,每次加载页面时都会添加一个新的滚动条。

view->page()->setViewportSize(view->page()->mainFrame()->contentsSize());

知道如何解决这个问题吗?

最佳答案

您只需禁用滚动条:

page()->mainFrame()->setScrollBarPolicy(Qt::Vertical, Qt::ScrollBarAlwaysOff);
page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);

要获得完整的示例,请使用我 3.5 年前在 Capturing web pages 中描述的内容。博客文章。此后的代码存储库已移至 http://qt.gitorious.org/qt-labs/graphics-dojo .

如果你注意上面的例子,就没有必要创建QWebView。您完全只能从 QWebPage 实例工作。

关于qt - 使用 QWebPage 创建整个页面屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9086046/

相关文章:

C++ Qt : Connect a TextEdit with a Label

c++ - QWebPage 在第一次加载后不工作

python - PyQt : how to use QWebPage with an anonimous proxy

c++ - 使用Lamda从QWebEngineView中的QWebEnginePage获取HTML

qt - 任何编译之前的 qmake 预构建步骤

当插槽确实存在时Qt连接 "no such slot"

c++ - Qt 将 UTF16 十六进制字符串转换为 QString

c++ - 如何将我的 Qt 应用程序主窗口始终放在 Windows 任务栏上方?

qt - 如何在 QWebView/QWebPage 中实现 "back" Action

c++ - 为请求的网页接收多个 loadFinished 信号