7

Qt (Qt クリエーターを使用した派手なブラウザーの例) を使用して、このコードを使用して Web ページのスクリーンショットを作成しています (ここから取得して変換します):

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->page()->setViewportSize(view->page()->mainFrame()->contentsSize());

これを修正する方法はありますか?

4

2 に答える 2

11

スクロールバーを無効にするだけです。

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

完全な例として、私が 3 年半前にWeb ページのキャプチャに関するブログ記事で説明したものを使用してください。そのためのコード リポジトリは、その後http://qt.gitorious.org/qt-labs/graphics-dojoに移動されました。

上記の例に注意すれば、QWebView を作成する必要はありません。QWebPage インスタンスからのみ完全に作業できます。

于 2012-07-13T04:57:08.343 に答える