複雑なダイアログがあり、空白がいっぱいで、縮小できません。Designer では、動的に非表示になる多くのコンポーネントと、動的に追加されるいくつかのコンポーネントがあります。サイズ ポリシー、サイズ ヒント、および最小サイズのダンプを追加しましたが、Qt でサイズを小さくドラッグできない理由がまだわかりません。
これをトラブルシューティングするためのツールまたは手法が必要です。
共有してください。
これを行うためのツールは知りませんが、以前はダイアログ内のさまざまな要素のパレットを変更し、予想よりも多くの (または少ない) スペースを占めているものを調べて、自分のそれらの要素の調査。
より一般的な意味で、ダイアログを固定サイズに設定していないことを確認してください。それは私にも一度噛みつきました。
QApplication::focusChanged(QWidget*,QWidget*) シグナルをキャプチャして、現在フォーカスされているウィジェットの背景を変更できます。これは、各ウィジェットが占有するスペースを判断するのに役立つと思います。
Firebug の要素と CSS メトリクスのインスペクタ モードに相当するものを使用できるように思えます。このようなツールの最も難しい部分は、個々のレイアウト ポリシーがウィジェットで特定のサイズ値を使用している理由または使用していない理由を効果的に把握して伝達することです。
レイアウトを見ないとわかりにくいですが、QGridLayoutを使用しているため、説明したようなサイズ変更の問題がたくさんあります。列または行の最大のものは、その列の最小幅を決定します。一列でも同じ。
QGridLayout を使用している場合は、列/行にまたがるようにしてみてください。
また、デザイナーでさまざまなレイアウト構成をすべて試し、サイズを変更してテストすることをお勧めします。私が働いている場所では実際に Designer を使用していませんが、レイアウトのアイデアをテストおよびデバッグするために常に使用しています。
試行錯誤の繰り返し。戦略的なスポットにストレッチを挿入すると、必要な効果を生み出すのに役立つことがよくあります。たとえば、最小サイズにしたいレイアウトに QPushButton がある場合、次のようにします。
QHBoxLayout* layout = new QHBoxLayout;
QPushButton* myBtn = new QPushButton("Test");
layout->insertStretch(1);
layout->addWidget(myBtn, 0);
layout->insertStretch(1);
また、setContentsMargins() を使用してレイアウトのコンテンツ マージンを設定できることも忘れないでください。
コードで遊んでみると、レイアウト システムをよりよく理解できることがわかったので、私は Designer を使用しません。