Jay
Jay

Reputation: 3489

reorder widgets in layout

I have a senario where I have QComboBoxes (the black rectangles) and QPushButtons (the red cubes). I need the two buttons to always stay on either side of the most right combo.

Valid XHTML.

Code example:

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

Please let me know if you have any ideas, tips or solutions.

Upvotes: 1

Views: 480

Answers (1)

Arnold Spence
Arnold Spence

Reputation: 22292

I think nested layouts will help you here. Instead of just adding your combo boxes to the main layout with the other buttons, add the combo boxes to their own layout and add that layout to the main layout. It should be easier to add and remove combo boxes from the inner layout leaving everything else where it is.

Upvotes: 1

Related Questions