1

アプリケーションウィンドウのサイズをゼロサイズに変更できます。最小ウィンドウサイズを制限したくありません。HBoxLayoutによるいくつかのウィジェット(QLineEdits、QLabels、QPushButtons)レイアウトセットがあります。

最初は、ウィンドウが非常に小さい場合、HBoxLayout内のすべてのウィジェットはsizeHintを尊重せずにサイズ変更されました。次に、それらにsetFixedSize(sizeHint)を使用しました。これで、sizeHintより下に縮小されることはありませんが、ウィンドウが非常に小さいときにオーバーラップし始めます。

私が欲しいのは、Thunderbirdが行うことです(スクリーンショットを添付):ウィジェットをウィンドウの境界から移動することで、ウィジェットをスムーズに非表示にします。それらのサイズは変更されていません。

Qtレイアウトシステムでそれをどのように達成できますか?

my application: normal window
http://i.stack.imgur.com/WLgLy.png

my application: small window
http://i.stack.imgur.com/IIhhs.png

Thunderbird: normal window    
http://i.stack.imgur.com/AYJ83.png

Thunderbird: small window
http://i.stack.imgur.com/ZyQou.png
4

2 に答える 2

1
  1. ウィジェットをQScrollAreaに配置します
  2. 垂直および水平スクロールバーポリシーをAlwaysOffに設定します
  3. 必要に応じてスクロール領域をレイアウトします

完了&完了

于 2012-08-27T22:04:47.920 に答える
0

おそらくそれはあなたが望むものではありませんが、これを考慮してください: すべてのものをウィジェット (ここでは「ウィジェット」という名前) に入れてください。

void MainWindow::resizeEvent(QResizeEvent *event){
   ui->widget->move(QPoint(event->size().width()-ui->widget->width()-20,ui->widget->y()));
   QMainWindow::resizeEvent(event);
}

できます!

于 2012-08-27T15:31:30.700 に答える