今晚我遇到了一个涉及在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 :(得分:0)
我找到了解决方案。我需要在恢复之前删除邮件正文窗口小部件。代码看起来像
self.layout.removeWidget(self.message_body)
self.layout.addWidget(self.message_body,2,0,4,7)