1

全体を表示するには小さすぎるウィンドウに表示されるQGraphicsObjectカスタムメソッドを使用しています。paint()下のスクロールバーを使用してスクロールすると、本来のように長方形を描くのではなくpaint.drawRect()、三角形が描かれます。

これは、左下隅までスクロールしたときにのみ発生するようです。他の隅には影響しません。ウィンドウを最大化して元のサイズに戻してからもう一度試してみると、正しく機能し、対角線は表示されません。

スクリーンショット

ここにテストコードがあります。+ キーと - キーを押すと、それぞれズームインとズームアウトします。

私は困惑しています。これはバグですか、それともここで何か不足していますか? これを修正するにはどうすればよいですか?

私は PySide 1.2.1、Python 3.3.2、および Windows 8 を使用しています。

4

1 に答える 1

0

グラフィックビューの例の1つであるQtの例「エラスティックノード」を実行したのと同じ経験があります。フレームの四角形が可視領域の外に出るまで、(「+」またはマウス ホイールを使用して) ズームインすることにより、対角線を再現できます。

回避策: バックグラウンド キャッシュを非アクティブ化 (graphwidget.cpp、コンストラクター、行 "setCacheMode(CacheBackground);" を削除)、コンパイル、実行 => 対角線なし。

ところで、私は Qt 4.8.5 を使用しています。

Qt バグ トラッカーを調べたところ、ペン幅 0 を使用すると予期しないものが描画される QTBUG-31579 が見つかりました。そのため、幅 1 pt の明示的なペンで長方形を描画してエラスティック ノードの例を変更してみました。バックグラウンドキャッシュが有効になっていても、期待どおりの結果が得られました。彼らはその問題に取り組んでいるようなので、次の Qt リリースで解決されるはずです。

Sorbet、より迅速に解決策が必要な場合は、描画時にゼロ以外の明示的なペンを設定してみてください。

これがうまくいくことを願っています。

于 2013-10-13T09:03:29.043 に答える