2017-10-08 2 views
0

J'ai rencontré un problème ce soir qui implique le redimensionnement d'un QTextBox dans un QGridLayout. Le code est la plupart du temps auto-explicatif. J'ai mis le QTextBox à travers 10 cellules dans mon init_ui. J'ai une taille de fenêtre de 500x500.Problème avec la taille du widget et l'ajout de nouveaux widgets

def init_ui(self): 
    self.message_body = QTextEdit() 
    self.layout.addWidget(self.message_body, 2, 0, 9, 7) 
    self.show()   

Ensuite, dans une méthode ultérieure, changeSize, je parviens à modifier la taille de QTextEdit. De cette méthode, j'appelle la méthode suivante pour charger les titres qui apparaîtront sous le QTextEdit 445x280. Le chargement de ces titres nécessite l'ajout de nouveaux widgets à la mise en page. Ce qui est apparemment un problème. Je ne sais pas si c'est de mauvais style ou non. Est-ce que tous les widgets doivent être ajoutés dans init? De toute façon, lorsque

self.layout.addWidget(lbl_title, 10, i) 

s'exécute. Je perds mon QTextEdit redimensionné. Même si je le suis avec une autre fonction de redimensionnement.

Voici les deux méthodes impliquées

def changeSize(self): 
    self.message_body.resize(445,280) 
    self.loadTitles() 

def loadTitles(self): 
    titles = Movie.title_library 
    for i, my_title in enumerate(titles): 
     lbl_title = QLabel(my_title) 
    ## This is the line that refreshes the size to span 10x8 units  
     self.layout.addWidget(lbl_title, 10, i)  
    self.message_body.resize(445,280) 

Répondre

0

je me suis dit la solution. J'avais besoin de supprimer le widget du corps du message avant de le réinstaller. Le code ressemblait à

self.layout.removeWidget(self.message_body) 
self.layout.addWidget(self.message_body,2,0,4,7)