【问题标题】:Updating-refreshing layout更新刷新布局
【发布时间】:2014-01-29 12:41:13
【问题描述】:

在 QtDesigner 中,我创建了具有水平布局的 QFrame(layoutSpacing 为 5)。其中有 3 个 QLineEdit 小部件,具有固定大小和扩展大小的水平间隔(因此当框架大小更改时,仅更改间隔)

假设 lineEdits 的初始大小为 100x30。我需要更改 lineEdit 小部件的大小,我可以通过这样的代码来做到这一点:

self.__ui.lineEdit1.resize(40, 30)
self.__ui.lineEdit2.resize(140, 30)
self.__ui.lineEdit3.resize(80, 30)

它们的大小改变了,但它们的 X 位置没有改变,所以我在前两个 (65) 之间有很大的空间,并且 lineEdit2 在 lineEdit3 下方。

我应该以某种方式更新布局或框架吗?我在提到的代码之前和之后都尝试过 layout.setSpacing(5) 但在这种情况下 lineEdit 的大小没有改变(它又是最初的 100)

编辑这里是 Qurban 要求的屏幕截图(我在paint :D 中编辑过):

【问题讨论】:

  • 可以发一下resize调用前后的截图吗?
  • @qurban 请看一下我的问题中的编辑
  • 使用setFixedSize() 而不是resize() 每次你想调整小部件的大小,正如ekhumoro 在他的回答中所建议的那样。此解决方案符合您的要求。

标签: python qt layout pyqt4


【解决方案1】:

使用setFixedSize 方法:

    self.__ui.lineEdit1.setFixedSize(40, 30)
    self.__ui.lineEdit2.setFixedSize(140, 30)
    self.__ui.lineEdit3.setFixedSize(80, 30)

您可能还想考虑使用水平布局的 layoutStretch 属性。这允许您设置每个行编辑允许的空间比例。因此,如果将其设置为“1, 4, 2”,第二行编辑将获得第一次的四倍空间,第三行将获得两倍的空间。这样做的好处是它会在调整主窗口大小时自动缩放。

【讨论】:

    猜你喜欢
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多