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 回答