2016-10-19 17 views
0

レイアウトとQLabelがあるウィンドウがあります。 QLabelには画像が含まれています。イメージはQLabelの親レイアウトに表示されます。ユーザーがウィンドウを縮小することを決定した場合、最小サイズに達するまでイメージが縮小されます。ウィンドウのスケーラビリティは失われます。ユーザーがウィンドウを拡大縮小することを決定した場合、画像は拡大するはずです。どちらの場合も、画像のアスペクト比は維持されるべきです。Qt QLabelウィンドウ付きスケールイメージ

私は、setScaledContentsを使用してQLabelの親にイメージを塗りつぶすことができました。 QPixmap.scaled()を使って定義しようとすると、イメージが極端にピクセル化されてしまいますが、最小サイズは常にイメージファイルの元のサイズのようです。そして私はイメージをスケールアップすることができますが、アスペクト比は決して保存されません。

これはかなり簡単なはずですが、私は非常に迷っています。助けて!

答えて

1

setMinimumSizesetSizePolicyにはsize policyを最低限使用してください。これにより、ラベルが設定した最小サイズより小さくなるのを防ぐことができます。

アスペクト比を維持することはもう少し複雑です。 Fist QLabelのメンバ変数として描画したい画像のpixmapを保存します。次に、ピックスマップのスケーリングを自分で行うために、ラベルのペイントイベントを再実装します。ペイントイベントでthis-> size()を呼び出すと、ピクスマップが描画される領域が得られます。そのサイズとQt :: KeepAspectRatioでpixmapにscaledを呼び出し、ラベルにsetPixmapを付けてください。最後にQLabel :: paint_eventを呼び出します。

関連する問題