изменить порядок виджетов в макете - PullRequest
1 голос
/ 07 сентября 2011

У меня есть сенарио, где у меня есть QComboBoxes (черные прямоугольники) и QPushButtons (красные кубики). Мне нужны две кнопки, чтобы всегда оставаться по обе стороны от самой правой комбинации.

Valid XHTML.

Пример кода:

self.button1 QPushButton()
self.button2 = QPushButton()


def addCombo():
    # remove buttons from next to previous right most combo
    layout.removeWidget( self.button1 )
    layout.removeWidget( self.button2 )

    # add button left of new right most combo
    layout.addWidget( self.button1 )
    # add new right most combo
    layout.addWidget( QComboBox() )
    # add button right of new right most combo
    layout.addWidget( self.button2 )


def removeCombo():
    # remove buttons from next to previous right most combo
    layout.removeWidget( self.button1 )
    layout.removeWidget( self.button2 )

    # delete right most combo
    layout.takeAt( len(layout.children()) -1 )

    # add button left of new right most combo # button , index
    layout.insertWidget( self.button1 ,  len(layout.children()) - 2 )
    # add button right of new right most combo
    layout.addWidget( self.button2 )


#So for the first layout:
layout.addWidget( QComboBox() )
layout.addWidget( self.button1 ) 
layout.addWidget( QComboBox() )
layout.addWidget( self.button2 )


#second layout:
addCombo()


#third layout:
addCombo()


# fourth layout

Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи, советы или решения.

1 Ответ

1 голос
/ 07 сентября 2011

Я думаю, что здесь помогут вам вложенные макеты.Вместо того чтобы просто добавлять поля со списком в основной макет с помощью других кнопок, добавьте поля со списком в их собственный макет и добавьте этот макет в основной макет.Должно быть проще добавлять и удалять поля со списком из внутреннего макета, оставляя все остальное там, где оно есть.

...