2017-10-08 76 views
0

我遇到了一个问题,包括在QGridLayout中调整QTextBox的大小。代码大多是不言自明的。我将QTextBox设置为在我的init_ui中跨越10个单元格。我有一个500x500的窗口大小。小部件大小和添加新小部件的问题

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

然后在后面的方法中,changeSize,我成功地能够改变QTextEdit的大小。从这个方法我调用下一个方法来加载将出现在445x280 QTextEdit下面的标题。加载这些标题需要将新的小部件添加到布局中。这显然是一个问题。我不知道这是否可怜的造型。是否应该在init中添加所有的小部件?无论哪种方式,当

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

运行。我失去了我调整大小的QTextEdit。即使我使用另一个调整大小功能。

这里有牵连

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) 

回答

0

我想出溶液中的两种方法。我需要在恢复消息正文部件之前删除消息正文部件。代码看起来像

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