将小部件定位到QBoxLayout

0 投票
1 回答
775 浏览
提问于 2025-04-17 19:37

我正在用PySide来构建一个图形界面。

我有一个QBoxLayout,并且往里面添加了一些控件,但我遇到的问题是我想控制这些控件的位置,但一直没能做到。我试过文档里提供的方法,

addWidget( widg, int streatch, int alignment)

但是没有达到我想要的效果。所以我希望最终的布局看起来像这样:


------------------------------------------------------------ ^^ ** &&&&&&

如果这条线____代表整个窗口/布局,我希望我在代码中命名为wid的控件像虚线那样--------,滑块的位置和^^一样,最后按钮的位置在&&&&&。

我的第二个问题是,我想在滑块和组合框上添加一些标签,并且我想确定它们的位置,我该怎么做呢?

这是我的代码:

    self.wid = GLWidget()

    mainLayout = QtGui.QHBoxLayout()
    mainLayout.addWidget(self.wid)



    self.xSlider = self.createSlider()
    self.ySlider = self.createSlider()

    mainLayout.addWidget(self.xSlider)
    mainLayout.addWidget(self.ySlider)

    self.btn = QtGui.QPushButton('OK')
    self.btn.resize(self.btn.sizeHint())

    mainLayout.addWidget(self.btn)


    self.combo = QtGui.QComboBox()

    mainLayout.addWidget(self.combo)

    self.setLayout(mainLayout)
    self.setWindowTitle(self.tr("Hello GL"))
    self.setGeometry(350, 350, 1000, 1000)

1 个回答

1

你可以用QGridLayout来代替QHBoxLayout,并使用QGridLayout的setColumnMinimumWidth方法来设置你需要的控件宽度。就像这样:

mainLayout = QtGui.QGridLayout()
mainLayout.setColumnMinimumWidth(0, 100) #set column 0 width to 100 pixels
button = QtGui.QPushButton('OK')
mainLayout.addWidget(button, 0, 0) #adds the button to the widened column

然后继续添加其他控件。

撰写回答