【问题标题】:Why does my window layout change when I change my selection?为什么当我更改我的选择时我的窗口布局会发生变化?
【发布时间】:2016-05-02 07:47:20
【问题描述】:

如果您查看我的两张图片here,您会注意到在两个选项之间切换会改变右侧QListWidget 的大小。

我使用QGridLayout 对其进行了布局。这是相关代码sn-p,其中pn_list是相关小部件,但您可以看到完整代码here

def initUI(self):
    # Layouts
    grid = QtGui.QGridLayout()
    ov_main = QtGui.QHBoxLayout()
    ov_col1 = QtGui.QFormLayout()
    ov_col2 = QtGui.QVBoxLayout()
    ov_custs = QtGui.QFormLayout()


    # Main window widgets
    self.pn_input = QtGui.QLineEdit()
    overviewBox = QtGui.QGroupBox('Overview')
    self.pn_list = MyListWidget()

    # Main window layout
    grid.addWidget(QtGui.QLabel('Part Number'), 1, 1)
    grid.addWidget(self.pn_input, 1, 2)
    grid.addWidget(overviewBox, 2, 1, 1, 2)
    grid.addWidget(self.pn_list, 1, 3, 2, 1)

更新:另外,作为后续问题,我能做些什么来防止这种情况发生?最后,我希望“描述”字段在行长超过预定字符限制时换行 - 我目前让我的演示者在超过此长度时截断“描述”。我如何让QLabel 以给定的字符宽度换行?

【问题讨论】:

    标签: python qt layout


    【解决方案1】:

    想通了。在MyListWidget(扩展QListWidget)上,我重写了sizeHint 方法以返回我希望我的小部件的宽度(以像素为单位):

    class MyListWidget(QtGui.QListWidget):
    
        def sizeHint(self):
            hint = QtCore.QSize()
            hint.setWidth(120)
            return hint
    

    然后,在我的initUI 方法中,我在#Main window layout 部分添加了一行:

    # Main window layout
    grid.addWidget(QtGui.QLabel('Part Number'), 1, 1)
    grid.addWidget(self.pn_input, 1, 2)
    grid.addWidget(overviewBox, 2, 1, 1, 2)
    grid.addWidget(self.pn_list, 1, 3, 2, 1)
    

    这使右侧的小部件保持恒定宽度,但是我仍然遇到不同长度的描述弄乱了事情的问题。我在 initUI 方法中添加了以下几行,以类似地处理描述 QLabel 小部件,现在一切都很好:

    myQLabel.sizeHint = lambda: QtCore.QSize(150, -1)
    myQLabel.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
    myQLabel.setWordWrap(True)
    

    lambda 语句本质上是实现我对QListWidget 所做的更快的方法。在QListWidget 的情况下,我已经在重新实现该类以添加自定义信号,因此我在那里添加了sizeHint 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-26
      • 1970-01-01
      • 2020-08-27
      • 2012-06-13
      • 1970-01-01
      • 2021-09-24
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多