我正在将一个小部件放在PyQt的Qt Designer中,但在应用网格布局后,努力使元素尽可能保持彼此靠近。
例如,在此布局中,我将问号(用作工具提示)设置为距离每个输入元素的右边缘2 px:
当我应用网格布局时,这些空间大量(并且在所有3条线上不一致)增加:
我尝试将水平布局应用于元素行,但即使这样也会导致元素以不一致的方式更加水平地展开。
我错过了一些明显的东西吗?有没有办法强迫元素与相邻元素保持一定距离?
编辑/更新
感谢three_pineapples' suggestion,我已经放了一些水平间隔(虽然我不确定我是否按照预期的方式完成了它?)
这在一定程度上解决了它,但是:
QLineEdit
和文件浏览按钮之间的差距是12 px,而不是我想要的5)答案 0 :(得分:0)
您是否尝试在QGridLayout上调用setSpacing(0)来减少项目之间的间距? (如果您愿意,还有setHorizontalSpacing(x)和setVerticalSpacing(y))。此外,setContentsMargins(0, 0, 0, 0)将消除网格上的外边距,我认为这不是你在这里寻找的,但可能与绊倒这个的人有关或有用。
段:
from PyQt4 import QtGui
class MyClass(QtGui.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
p1 = QtGui.QPushButton('One', self)
p2 = QtGui.QPushButton('Two', self)
p3 = QtGui.QPushButton('Three', self)
p4 = QtGui.QPushButton('Four', self)
grid = QtGui.QGridLayout(self)
grid.addWidget(p1, 0, 0)
grid.addWidget(p2, 0, 1)
grid.addWidget(p3, 1, 0)
grid.addWidget(p4, 1, 1)
grid.setContentsMargins(0, 0, 0, 0) # this seems to be the outer padding of the grid
grid.setHorizontalSpacing(0) # I think this is what you're looking for
grid.setVerticalSpacing(0)
# grid.setSpacing(0) # this would set vertical & horizontal spacing at once
self.setLayout(grid)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MyClass()
window.show()
sys.exit(app.exec_())
我不习惯使用QtDesigner,但如果您愿意,应该有方法在那里设置这些属性。