Qt:为什么子部件在 QGridLayout 中重叠?

标签 qt widget qgridlayout

我有一个固定大小的小部件 x。然后首先我拿了一个 QScrollArea,然后是一个 QGridLayout,我将其设置为 scrollAreaWidgetContent 的布局。然后我开始在网格布局的 (0,0)、(0,1)、(1,0)、(1,1)... 布局中添加一些小部件 x。然后当我运行程序时,奇怪的是当我垂直缩小窗口时,小部件重叠。

Overlaped widgets

正如预期的那样,当我垂直增加窗口大小时,它们不再重叠。

Non overlapped

但奇怪的是,当我水平缩小窗口时,这个问题并没有发生。例如,

Horizontal resizing

我的问题是,为什么会发生这种情况,更重要的是,请记住我想使用 gridlayout,如何解决这个问题?

最佳答案

正如您在问题中所说: 您的小部件具有固定大小,因此当没有剩余空间时布局不会缩小它们。 所以问题是:缩小窗口时你希望发生什么?

  1. 如果您想缩小小部件,则必须将小部件的 sizePolicy 从“固定”更改为“首选”。
  2. 如果你想减少布局中的小部件数量,那么你可以在调整大小事件中添加一个事件处理程序并删除它们
  3. 如果你想禁止窗口缩小,那么你需要将scrollarea的sizePolicy设置为一个fixed或者minimumSize

关于Qt:为什么子部件在 QGridLayout 中重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24676942/

相关文章:

c++ - 使用 qvector 将 QTableWidget 项目从一个 qtableWidget 转移到另一个

c++ - 如何将 qml 的 console.log() 重定向到 cpp stdout

c++ - 通过 qDebug 打印 qByteArray

c++ - Qt5 自定义小部件

python - GridLayout 中的小部件相互重叠

qt - 如何从左上到右填充 QGridLayout?

c++ - Qt 的 foreach 中的第二项是否仅评估一次?

Flutter如何以编程方式调用自定义小部件中的方法?

python - 如何在按下后更改按钮的背景颜色并恢复到之前的颜色

qt - QGridLayout 中包含在多个单元格中的小部件未居中