Я хочу создать дочерний контейнерный макет, который будет содержать 2 виджета. Эти 2 виджета должны быть расположены рядом друг с другом, но моя текущая установка все еще имеет некоторый промежуток между ними.
Я уже установил интервал в 0 setSpacing(0)
, А также setContentsMargins(0,0,0,0)
не помогло
Я использую PyQt5, но это не должно быть проблемой при преобразовании кода C ++.
Как вы можете видеть на картинке, есть еще небольшой разрыв:
(Слева: LineEdit — Справа: кнопка)
import PyQt5.QtCore as qc
import PyQt5.QtGui as qg
import PyQt5.QtWidgets as qw
import sys
class Window(qw.QWidget):
def __init__(self):
qw.QWidget.__init__(self)
self.initUI()
def initUI(self):
gridLayout = qw.QGridLayout()
height = 20
self.label1 = qw.QLabel("Input:")
self.label1.setFixedHeight(height)
gridLayout.addWidget(self.label1, 0, 0)
# Child Container
childGridLayout = qw.QGridLayout()
childGridLayout.setContentsMargins(0,0,0,0)
childGridLayout.setHorizontalSpacing(0)
self.lineEdit1 = qw.QLineEdit()
self.lineEdit1.setFixedSize(25, height)
childGridLayout.addWidget(self.lineEdit1, 0, 0)
self.pushButton1 = qw.QPushButton("T")
self.pushButton1.setFixedSize(20, height)
childGridLayout.addWidget(self.pushButton1, 0, 1)
# -----------------
gridLayout.addItem(childGridLayout, 0,1)
self.setLayout(gridLayout)if __name__ == '__main__':
app = qw.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
Документация QT гласит:
По умолчанию QLayout использует значения, предоставленные стилем. На большинстве платформ поле составляет 11 пикселей во всех направлениях.
Ref:http://doc.qt.io/qt-4.8/qlayout.html#setContentsMargins
Поэтому вам может понадобиться использовать setHorizontSpacing (int spacing) для горизонтального пространства и setVerticalSpacing (int spacing) для вертикального.
На основании документации, это может удалить место в вашем случае.
Ref:http://doc.qt.io/qt-4.8/qgridlayout.html#horizontalSpacing-prop
Если не решен, есть возможность переопределить настройки стиля для пространства (откуда берется макет) …. Я думаю, что это утомительно
Если вы хотите предоставить пользовательские интервалы макета в подклассе QStyle, реализуйте слот layoutSpacingImplementation () в своем подклассе.
Больше деталей:
http://doc.qt.io/qt-4.8/qstyle.html#layoutSpacingImplementation
Других решений пока нет …