我的应用程序窗口可以调整为零大小。我不想限制最小窗口大小。HBoxLayout布局了几个小部件(QLineEdits、QLabels、QPushButtons)。
起初,当窗口很小时,HBoxLayout中的所有小部件都会在不考虑其sizeHint的情况下调整大小。然后我在它们上使用了setFixedSize(sizeHint)。现在,它们不会缩小到sizeHint以下,而是在窗口很小时开始重叠。
我想要的是雷鸟的功能(附截图):它通过将窗口小部件移出窗口边界来平滑地隐藏它们。它们的大小没有变化。
如何使用Qt布局系统实现这一点?
my application: normal window
https://i.stack.imgur.com/WLgLy.png
my application: small window
https://i.stack.imgur.com/IIhhs.png
Thunderbird: normal window
https://i.stack.imgur.com/AYJ83.png
Thunderbird: small window
https://i.stack.imgur.com/ZyQou.png
- 将小部件放入QScrollArea
- 将垂直和水平滚动条策略设置为AlwaysOff
- 根据需要布局滚动区域
完成&完成
也许这不是您想要的,但请考虑一下:把你所有的东西都放在一个小部件中(这里只命名为"小部件"),不要把这个"小部件"放在任何布局中,让它免费,并把这个事件函数添加到你的窗口类中:
void MainWindow::resizeEvent(QResizeEvent *event){
ui->widget->move(QPoint(event->size().width()-ui->widget->width()-20,ui->widget->y()));
QMainWindow::resizeEvent(event);
}
它有效!