将小部件定位到QBoxLayout
我正在用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
然后继续添加其他控件。