(Py)Qtで均一なアスペクト比でスケーリングを許可するにはどうすればよいですか?
-
06-07-2019 - |
質問
QLabel内にQImageがラップされている場合、ウィンドウのサイズを変更し、アスペクト比を維持するときに画像を拡大または縮小できますか(画像が歪まないように)? setScaledContents()を使用してスケーリングでき、最小サイズと最大サイズを設定できることがわかりましたが、画像のアスペクトは失われます。
Pythonを使用してこれを説明できれば素晴らしいと思います(c ++がわからないため)が、取得できるものを取り上げます。 :-)
事前に感謝します!
解決
これをC ++として示しています。これは私が見ているドキュメントです。Pythonに変換するのはそれほど難しくないはずです。
QLayoutItem
のカスタム派生物を作成する必要があります。これは、 bool hasHeightForWidth()
および int heightForWidth(int width)
をオーバーライドして、アスペクト比はどういうわけか。画像を渡してクエリするか、単に比率を直接設定することができます。また、 widget()
関数が適切なラベルへのポインターを返すことを確認する必要があります。
これが完了すると、ウィジェットと同じ方法でレイアウト項目をレイアウトに追加できます。したがって、ラベルが追加されたら、カスタムレイアウトアイテムクラスを使用するようにラベルを変更します。
実際にこれをテストしたことはないので、現時点では理論的な解決策です。必要に応じて、デザイナーを介してこのソリューションを実行する方法がわかりません。
他のヒント
画像を QPixmap
に変換し( QPixmap.fromImage(img)
を使用)、次に scaledToHeight()
。