【发布时间】:2018-11-26 03:00:35
【问题描述】:
例如,我们在 QMainWindow 中有 QHBoxLayout。
让我们在上面的布局中设置小部件。
但是(!)很少有小部件具有离散的视觉表示。 换句话说,它们几乎没有依赖于可用空间的状态。
例如:
- 如果可用空间过多 - 它必须看起来像大图 + 一些文字
- 如果可用空间最小 - 它必须看起来像小图像
- 如果只有最小空间可用 - 它必须看起来像按钮 + 标签
- 等等……
因此,当用户更改主窗口大小时,我们的“动态”小部件必须根据可用空间显示自己的表示。
如何在 Qt 中实现?
UPD:Microsoft 功能区界面中最接近的行为
UPD2:下面的 gif 中出现的 QML 最接近的行为(在用户调整窗口大小的部分)
【问题讨论】:
-
有
sizeHint.. 对你有用吗? -
从您的描述看来,
QHBoxLayout中的每个QWidget都应该覆盖QWidget::resizeEvent并根据其新大小调整其内容/外观。 -
@"Jesper Juhl" 我看了看,但没有找到任何方法来检索新请求的大小。这个功能对我没有帮助:(
-
@G.M.我试过了,但是当我减小窗口大小时,当所有小部件完全适合所有窗口空间时,resizeEvent 停止触发。所以我无法比较请求的大小小于我的复杂小部件大小 -> 所以我无法更改小部件视图