web-dev-qa-db-ja.com

Qtのフォームレイアウトメカニズムについて

Qtには、デスクトップアプリケーションのウィンドウの表示を処理するための柔軟で強力なレイアウトメカニズムがあります。

しかし、柔軟性が非常に高いため、何かがうまくいかず、微調整が必​​要な場合、ほとんど理解できません。そして非常に強力なので、フォームがどのように見えるべきかについてのQtの意見を圧倒しようとする試みで誰よりも勝つことができます。

だから、誰かが記事を説明したり、Qtのポジショニングメカニズムのソースを提供したりできますか?

名前の末尾のアンダースコアでマークされたQLabelQPushButton、およびQTableViewを、QTextBrowserが_verticalStretch = 1_以下。ウィジェットの高さを適切に処理するにはどうすればよいですか?

Googleドキュメントのフォームの.uiファイル。名前で「____」を検索し、QtDesignerでプレビューします

58
Maxim Popravko

レイアウトは実際には「i think」と理解しやすいです:)
レイアウトの簡単な説明は、QTブック「QT第2版でのC++ Guiプログラミング」にあります。 」

レイアウトとそのサイズポリシーに関する注意事項

  • ほとんどのQtウィジェットにはサイズポリシーがあります。このサイズポリシーは、ウィジェットがどのように伸縮するかをシステムに指示します。クラスQSizePolicyから取得します。サイズポリシーには、垂直と水平の両方のコンポーネントがあります。
  • ほとんどのウィジェットにはサイズヒントもあります。このサイズのヒントは、ウィジェットの好ましいサイズをシステムに伝えます
  • QSizePolicyには、ウィジェットをさまざまな速度で成長させるためのストレッチ係数があります

私は4つのサイズポリシーにしか精通していません

  • 固定サイズポリシー-ウィジェットのサイズは固定されており、拡大できません。サイズのヒントのままです。
  • 最小サイズポリシー-サイズヒントはウィジェットの最小サイズですが、必要に応じてさらに大きくすることができます。
  • 推奨サイズポリシー-ウィジェットはサイズヒントよりも大きくなったり小さくなったりします。
  • サイズポリシーの拡大-ウィジェットはサイズヒントよりも大きくまたは小さくできます:)

聞きたいかもしれませんが、

優先と拡張の違いは何ですか?
answer:2つのウィジェットを持つフォームを想像してください。1つは優先ウィジェット、もう1つは拡張ウィジェットで、ウィジェットに余分なスペースが与えられます拡大するポリシーで。優先ポリシーを持つウィジェットは、サイズヒントのままになります。

(警告:専門家ではありません:))購入して読み通してください "C++ QT第2版でのGuiプログラミング」。私は現在それを読んでいて、その意味を十分に理解しています。画像を見て、それらが意味をなすかどうかを確認します。

サイズポリシーの説明
Size policy explained

簡単な例
これは、水平および垂直のサイズポリシーが水平および垂直のストレッチとして表示される2つのボタンを持つ単純なダイアログです。

example

これが最小サイズのプレビューです alt text

ここに、より大きなサイズの別のプレビューがあります alt text

[編集://追加されたサイズのヒントの例]

SIZEHINTに注意する必要がある理由
QTのレイアウトシステムは常にsizeHintを尊重するため、すべてのウィジェットにはsizeHintが不可欠です。これは、ウィジェットのデフォルトサイズが希望どおりになっていない場合にのみ問題になります。この問題を回避する唯一の方法は、ウィジェットを拡張(サブクラス)し、そのsizeHint()メンバー関数を再実装することです。例は1000語に相当します。スペースを節約するには、サンプルプロジェクトがある私のブログを参照してください。

116
Dr Deo