77

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

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

それで、誰かがQtのポジショニングメカニズムの説明、記事、または情報源を提供できますか?

QLabel名前の末尾にアンダースコアが付いている、、QPushButtonおよびを強制しようとしています。これは、以下QTableViewの場合の2倍になりQTextBrowserますverticalStretch = 1。ウィジェットの高さを適切に処理するにはどうすればよいですか?

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

4

3 に答える 3

142

レイアウトは実はわかりやすい「と思う」もの。:)
レイアウトの簡単な説明は、QT の本「C++ Gui programming with QT 2nd edition」にあります。

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

  • ほとんどの Qt ウィジェットにはサイズ ポリシーがあります。このサイズ ポリシーは、ウィジェットがどのように伸縮するかをシステムに伝えます。クラス QSizePolicy から取得されます。サイズ ポリシーには、垂直コンポーネントと水平コンポーネントの両方があります。
  • ほとんどのウィジェットには、サイズのヒントもあります。このサイズのヒントは、ウィジェットの推奨サイズをシステムに伝えます
  • QSizePolicy には、ウィジェットをさまざまな速度で拡大できるストレッチ ファクターがあります。
**私は 4 つのサイズ ポリシーしか知りません**
  • 固定サイズ ポリシー - ウィジェットのサイズは固定されており、拡大することはできません。サイズヒントのままです。
  • 最小サイズ ポリシー - サイズ ヒントはウィジェットの可能な最小サイズですが、必要に応じてさらに大きくすることもできます。
  • 優先サイズ ポリシー - ウィジェットはサイズ ヒントよりも縮小または拡大できます。
  • 拡張サイズ ポリシー - ウィジェットはサイズのヒントよりも縮小または拡大できます:)
優先と拡張の違いは何ですか? **答え:** 2 つのウィジェット (1 つは優先、もう 1 つはエキスパンド) を持つフォームを想像してください。次に、エキスパンド ポリシーを使用して、余分なスペースがウィジェットに与えられます。優先ポリシーを持つウィジェットは、サイズのヒントのままになります。

私はお勧めします (警告: 私は専門家ではありません :)) 「 QT を使用した C++ Gui プログラミング 第 2 版を購入して一読することをお勧めします。私は現在それを読んでいて、とても理にかなっています。画像を見て、意味があるかどうかを確認してください。

サイズ ポリシーの説明
サイズポリシーの説明

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

例

これが最小サイズのプレビューです。 代替テキスト

大きいサイズの別のプレビューはこちら 代替テキスト

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

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

于 2011-01-12T18:29:16.817 に答える
-3

QT スタイル シートを使用して、ウィジェットの高さやその他のプロパティを簡単にカスタマイズできる方法で制御できます。

http://doc.qt.io/archives/qt-4.7/stylesheet.html

レイアウトに関しては、ウィジェットを希望どおりに動作させるために、スペーサーと組み合わせて賢く使用する必要があります。

http://doc.qt.io/archives/qt-4.7/designer-layouts.html

于 2010-12-29T13:10:27.897 に答える