문제

i QTableWidget와 6 QPushBotton가 이런 식으로 레이아웃에 넣고 싶습니다

여기에 이미지 설명을 입력하십시오

bottons 간의 작은 간격

그러나 QGridLayout를 사용하면 다음과 같이 보입니다

여기에 이미지 설명

코드 :

    tab_Memory_layout = QtGui.QGridLayout()
    tab_Memory_layout.setVerticalSpacing(0)
    tab_Memory_layout.setAlignment(QtCore.Qt.AlignTop)
    tab_Memory_layout.addWidget(self.MemoryTable, 0, 0)
    tab_Memory_buttons = QtGui.QGridLayout()
    tab_Memory_buttons.setSpacing(5)
    tab_Memory_buttons.addWidget(self.pushButton_add_memory, 0, 0, QtCore.Qt.AlignTop)
    tab_Memory_buttons.addWidget(self.pushButton_up_memory, 1, 0, QtCore.Qt.AlignTop)
    tab_Memory_buttons.addWidget(self.pushButton_down_memory, 2, 0, QtCore.Qt.AlignTop)
    tab_Memory_buttons.addWidget(self.pushButton_top_memory, 3, 0, QtCore.Qt.AlignTop)
    tab_Memory_buttons.addWidget(self.pushButton_bottom_memory, 4, 0, QtCore.Qt.AlignTop)
    tab_Memory_buttons.addWidget(self.pushButton_delete_memory, 5, 0, QtCore.Qt.AlignTop)
    tab_Memory_layout.addLayout(tab_Memory_buttons, 0, 1)
    self.tab_Memory.setLayout(tab_Memory_layout)
.

나는 setRowStretch(i, 0), setVerticalSpacing(0)를 시도했지만 도움이되지 않았습니다!

나는 또한 Bottons 그룹에 대해 QGridLayoutQVBoxLayout를 사용했지만, 작동하지만 모든 버튼은 각 요소에 대한 AlignTop 및 레이아웃에 대해

에 사용했습니다.

도움이 되었습니까?

해결책

단지 spacer 레이아웃에서 :

여기에 이미지 설명

qspaceritem 클래스는 레이아웃에 빈 공간을 제공합니다.

verticalSpacer = QSpacerItem(40, 20, QSizePolicy.Minimum, QSizePolicy.Expanding)
tab_Memory_buttons.addItem(verticalSpacer, 6, 0, QtCore.Qt.AlignTop)
.

레이아웃의 추가 공간은 다른 위젯을 정렬하는 스페이서에 의해 "흡수"됩니다.

다른 팁

삭제 버튼 아래 QLabel ( "")을 추가하십시오.이것은 당신이 원하는 방식처럼 그들을 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top