2013-10-28 35 views
5

なぜ、この:予想通りQGraphicsView fitInViewマージンが

graphics_view->fitInView(scene->sceneRect(), Qt::KeepAspectRatio); 

は動作しませんか?シーンの矩形を正しくフィッティングすることができず、マージンが表示されます。

+3

最小のコード例とスクリーンショットを追加し、期待されるものとどのように違うのですか? –

答えて

2

私は問題が何であるかを知りました。this questionに記載されています。問題の主な原因は、フォームが表示される前にfitInViewを呼び出さないことです。

+0

実際には、マージンだけで何を意味しているのかによって決まります。リンクした質問の中で、これらの巨大な問題に遭遇した可能性もあります。それにもかかわらず、フォームが表示される前に、必要なものだけfitInViewを呼び出すことができます。 –

0

ドキュメントから: -

RECTシーンRECT内でなければなりません。それ以外の場合、fitInView()はrect全体が表示されることを保証することはできません。

それはしっかりと適合しない場合も...

RECTは、ビューの中央に配置されます。

最後に

RECTが空である、またはビューポートが小さすぎる場合、この関数は何もしません場合。

3

原因は次のとおりです。 https://bugreports.qt.io/browse/QTBUG-42331 - qtバグトラッカーで優先度を付けて投票してください。

要するに、fitInViewには余白がハードコードされているため、すべての種類の不具合が発生する可能性があります。これは、表示領域のピクセル数が少なくなり、不必要な再スケーリングが発生する可能性があることです。

既存の実装に基づいてfitInViewを再実装することで問題を解決できますが、それはばかげた余白を取り除くことができます。あなたはしかし、マージンを含めずに、元fitInViewメソッドを実装し直すそれを修正することができ

https://github.com/nevion/pyqimageview/blob/master/qimageview/widget.py#L276

関連する問題