将小部件放在 QScrollArea 的中心

Posted

技术标签:

【中文标题】将小部件放在 QScrollArea 的中心【英文标题】:Place widget in center of QScrollArea 【发布时间】:2014-03-08 18:16:44 【问题描述】:

如何将固定大小的自定义小部件放置在 QScrollArea 的中心?

我可以使用 myWidget.pos(x,y) 手动将小部件放置在 QScrollArea 中,但 QScrollArea 中没有 sizeChanged 信号,因此如果滚动区域发生更改,此位置将是错误的。

【问题讨论】:

你想做什么? 我认为将小部件放在滚动区域的中心会忽略滚动区域的滚动功能的含义。也许你可以考虑用别的东西来代替? 我使用 QScrollArea 来显示单个小部件,比如说一个用于绘画的画布。而且这个画布具有缩放功能,所以它当然可以比视口更小或更大。所以 QScrollArea 把小孩放在左上角,看起来很丑。 @folibis 您可以使用alignment 属性来更改滚动区域小部件的对齐方式。 谢谢@thuga,我真的很想念这个属性。必须更仔细地阅读文档 【参考方案1】:

我使用@thuga 的建议来设置对齐方式,但另外我必须为小部件设置一个固定大小(在此之前我只设置了最小大小),而且我需要使用水平布局而不是垂直布局一。出于某种原因,垂直布局忽略了滚动区域的水平对齐方式。

我使用setFixedSize() 为我的自定义小部件设置了固定大小,但可以从 Qt Designer 设置布局和对齐方式。

【讨论】:

以上是关于将小部件放在 QScrollArea 的中心的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PyQt 中的样式表将小部件放在前面?

安装后自动将小部件放在桌面上

将小部件放在键盘顶部 - 我目前在该小部件下方获得了大量空间

如何使用 grid() 将小部件水平居中?

以编程方式滚动 QScrollArea

Qt - QScrollArea 小部件剪辑内容