【发布时间】:2014-02-13 04:57:50
【问题描述】:
似乎大多数人都在问如何让他们的 QMainWindow 调整其内容的大小 - 我有相反的问题,我的 MainWindow 确实调整了大小,但我不知道为什么。
当我将QLabel 设置为更长的文本时,我的主窗口突然变大了,我不知道为什么会这样。
以下示例代码基本包含:
- 一个
QMainWindow-
QWidget作为中心小部件-
QVBoxLayout作为那个的孩子- 里面有一个
LabelBar。
- 里面有一个
-
-
LabelBar 是一个 QWidget,它又包含:
- 一个
QHBoxLayout- 其中有两个
QLabels。
- 其中有两个
一秒钟后,QTimer 将标签设置为更长的文本以说明问题。
PyQt 示例代码:
from PyQt5.QtWidgets import (QApplication, QHBoxLayout, QLabel, QWidget,
QMainWindow, QVBoxLayout, QSizePolicy)
from PyQt5.QtCore import QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
cwidget = QWidget(self)
self.setCentralWidget(cwidget)
self.resize(100, 100)
vbox = QVBoxLayout(cwidget)
vbox.addWidget(QWidget())
self.bar = LabelBar(self)
vbox.addWidget(self.bar)
timer = QTimer(self)
timer.timeout.connect(lambda: self.bar.lbl2.setText("a" * 100))
timer.start(1000)
class LabelBar(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
hbox = QHBoxLayout(self)
self.lbl1 = QLabel(text="eggs")
hbox.addWidget(self.lbl1)
self.lbl2 = QLabel(text="spam")
hbox.addWidget(self.lbl2)
if __name__ == '__main__':
app = QApplication([])
main = MainWindow()
main.show()
app.exec_()
【问题讨论】:
标签: qt resize qmainwindow qlayout qsizepolicy