【问题标题】:How to add widget to gridlayout starting from top-left corner如何从左上角开始将小部件添加到网格布局
【发布时间】:2012-12-05 21:46:45
【问题描述】:

我在 Qt Designer 中创建了一个 UI 并将其转换为 python:

在空白区域我添加了一个滚动区域和一个网格布局来对齐我的按钮。

每次我按下“CreatePose”按钮时,我都需要在网格布局中添加一个带有图标的按钮,从左上角开始。现在它将它添加到网格布局的中心。

self.ui.PoseBtn_GridLayout.setColumnMinimumWidth(4,4)
self.button = QtGui.QPushButton('')
self.button.setIcon(self._icon)
self.button.setIconSize(QtCore.QSize(128, 128))
self.button.setMinimumSize(QtCore.QSize(128, 128))
self.button.setMaximumSize(QtCore.QSize(128, 128))
self.ui.PoseBtn_GridLayout.addWidget(self.button)

如何解决这个问题?

【问题讨论】:

  • 那是 QSpacerItems 的用途,它占据了中心,因为它是您布局中唯一的小部件
  • 结帐my answer,我修改它以在网格布局中显示QPushButton而不重叠

标签: python layout pyqt


【解决方案1】:

看看用这个替换你发布的代码是否适合你:

self.ui.PoseBtn_GridLayout.setColumnMinimumWidth(4,4)

spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.ui.PoseBtn_GridLayout.addItem(spacerItem, 1, 1, 1, 1)

spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.ui.PoseBtn_GridLayout.addItem(spacerItem1, 1, 0, 1, 1)

self.button = QtGui.QPushButton('')
self.button.setIcon(self._icon)
self.button.setIconSize(QtCore.QSize(128, 128))
self.button.setMinimumSize(QtCore.QSize(128, 128))
self.button.setMaximumSize(QtCore.QSize(128, 128))
self.ui.PoseBtn_GridLayout.addWidget(self.button, 0, 0, 1, 1)

编辑

这就是你应该如何显示你的小部件以获得预期的结果,检查 Object Inspector,基本上你需要一个 QWidget 与网格布局在另一个 QWidget 与网格布局和 2 QSpaceItem的:

【讨论】:

  • 是的,但如果我通过单击 createpose btn 创建另一个按钮.. 那么我的第二个按钮与第一个 btn 重叠
  • 如何删除我的网格小部件中的所有小部件并以相同的顺序重新创建所有小部件。如果我再添加一个按钮,则刷新按钮。
  • @rishis3d 我可以帮你解决这个问题,请开始新帖子并在评论中提及我,以便我收到通知
  • 嗨 jacobs.. 我在这里开始了一个新帖子 stackoverflow.com/questions/14003652/…
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2016-11-26
  • 2013-05-01
  • 2023-03-14
  • 2012-06-03
相关资源
最近更新 更多