如何不在QHBoxLayout中间隔小部件

3 投票
2 回答
5424 浏览
提问于 2025-04-18 13:01

在使用:

layout = QtGui.QHBoxLayout()
layout.addWidget(QtGui.QPushButton())
layout.addWidget(QtGui.QPushButton())
layout.addWidget(QtGui.QPushButton())

的时候,按钮会自动在QHBoxLayout的宽度内分开排列。可是我希望按钮能够紧挨着放在一起,不留空隙。

我尝试使用:

    layout.setContentsMargins(0, 0, 0, 0)
    layout.importLayout.setSpacing(0) 

但是对按钮的间距没有任何影响。请问需要设置QHBoxLayout的哪个属性才能取消自动间距呢?

2 个回答

2

我想你是希望在这些按钮之间的间距非常小,差不多像这样。

这里插入图片描述

你可以试试用 layout.setSpacing(0) 这个代码。

self.horizontalLayout = QtGui.QHBoxLayout(self.widget)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setMargin(0)
self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
self.pushButton = QtGui.QPushButton(self.widget)
self.pushButton.setObjectName(_fromUtf8("pushButton"))
self.horizontalLayout.addWidget(self.pushButton)
self.pushButton_2 = QtGui.QPushButton(self.widget)
self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))
self.horizontalLayout.addWidget(self.pushButton_2)
self.pushButton_3 = QtGui.QPushButton(self.widget)
self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))
self.horizontalLayout.addWidget(self.pushButton_3)
5

你的做法其实是对的。布局上没有内容的边距,也没有间距的话,按钮就会非常靠近,大约只有2个像素的距离。虽然通过样式表设置负边距可以让按钮更靠近,但我不推荐这样做,因为看起来不太好。

from PySide import QtGui

app = QtGui.QApplication([])
window = QtGui.QWidget()
window.setStyleSheet('QPushButton{margin-left:-1px;}') # remove this line if you want to have a tiny bit of spacing left

layout = QtGui.QHBoxLayout(window)
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(0)
layout.addWidget(QtGui.QPushButton('Button'))
layout.addWidget(QtGui.QPushButton('Button'))
layout.addWidget(QtGui.QPushButton('Button'))
layout.addWidget(QtGui.QPushButton('Button'))
layout.addWidget(QtGui.QPushButton('Button'))
layout.addWidget(QtGui.QPushButton('Button'))

window.show()

app.exec_()

撰写回答