Как удалить интервал внутри gridLayout (QT)?

Я хочу создать дочерний контейнерный макет, который будет содержать 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_())

1 ответ

Документация QT гласит: По умолчанию QLayout использует значения, предоставленные стилем. На большинстве платформ поле составляет 11 пикселей во всех направлениях.

Ссылка: http://doc.qt.io/qt-4.8/qlayout.html

Поэтому вам может понадобиться использовать setHorizontSpacing(int spacing) для горизонтального пространства и setVerticalSpacing(int spacing) для вертикального.

На основании документации, это может удалить место в вашем случае. Ссылка: http://doc.qt.io/qt-4.8/qgridlayout.html

Если не решен, есть возможность переопределить настройки стиля для пространства (откуда берется макет).... Я думаю, что это утомительно

Если вы хотите предоставить пользовательские интервалы макета в подклассе QStyle, внедрите слот layoutSpacingImplementation() в свой подкласс.

Дополнительные сведения: http://doc.qt.io/qt-4.8/qstyle.html

Другие вопросы по тегам