2017-02-23 3 views
0

Qtのダイアログに画像を追加するには?Qtダイアログに画像をレイアウトする

これは過去に頻繁に尋ねられた質問で、ほとんどの回答にはQLabelとそのsetPixmapメンバーが出ています。しかし、これは通常、ユーザは(私が)意図するものではありません。

  • ピックスマップがセットされたQLabelは、周囲のQLayoutに参加しません。つまり、たとえば、QPushButtonのように、ダイアログのサイズが変更されたときのサイズ変更を単に拒否します。 (類似のもの)は、それらの間の利用可能な水平スペースを均等に分割するであろう。別ウィンドウ(タブ)の大きな表示で見る同じレイアウトのQPushButtonの隣にあるピックスマップを持つQLabeはちょうどサイズが固定されたままです。

  • デフォルトでは、裸のQLabelはサイズ変更時にコンテンツのサイズを変更しません。

  • ただし、(QLabel::setResizeContents)の場合、アスペクト比は維持されません。

ダイアログに表示されるピックスマップを持っており、それが合理的レイアウトに参加持っている任意のネイティブ方法はありますか?

+0

あなたの質問は広くなっています。 – eyllanesc

+0

私はそうは思わない。なぜあなたはやる? – Kamajii

+0

グラフィックシーンビューフレームワークを試すことができます。画像をピクセルマップアイテムとしてシーンに追加する。 –

答えて

0

アイテムのサイズ変更はsizePolicyプロパティで管理できます。 Qt documentationから:

sizePolicy:QSizePolicy

このプロパティは、ウィジェットのデフォルトのレイアウト動作を保持しています。

このウィジェットの子を管理するQLayoutがある場合、そのレイアウトで指定されたサイズ のポリシーが使用されます。そのようなQLayoutがない場合、 この関数の結果が使用されます。

デフォルトポリシーは優先/優先です。つまり、 ウィジェットは自由にサイズ変更できますが、サイズはsizeHint()が返されることを前提としています。 ボタンのようなウィジェットは、サイズポリシーを設定して、 が水平に伸びるように指定しますが、垂直方向に固定します。 ラインエディットコントロール(QLineEdit、QSpinBox、または編集可能な QComboBoxなど)やその他の水平方向ウィジェット( QProgressBarなど)にも同じことが適用されます。 QToolButtonは通常正方形なので、両方向で成長することができます。 異なる方向をサポートするウィジェット( QSlider、QScrollBar、QHeaderなど)は、それぞれの 方向のみの伸縮を指定します。スクロールバーを提供できるウィジェット(通常はQScrollAreaのサブクラス )は、追加のスペースを で使用できることを指定する傾向があり、sizeHint()よりも小さくすることができます。

私はあなたがQSizePolicy::Expandingサイズポリシーを探していると思う:

のsizehintは()賢明なサイズですが、ウィジェットを縮小することができ、 はまだ役に立ちます。ウィジェットは余分なスペースを使用できるため、できるだけ多くのスペース(たとえば、水平スライダー の水平方向)を取得する必要があります。

これをQLabelに設定し、サイズ変更の方法を確認してください。 QSizePolicy::Policy列挙型から他の値を試してください。

+0

これは問題の解決策を提示することができません。 –

関連する問題