0

我正在尝试在垂直框架内包含一个包含标签的水平框架,但即使显示了标签,它也不在正确的位置,并且仅限于标准 QLabel 的大小

这是主要课程:

class Launcher(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFrame() #sets up window's geometry, works fine
        self.setContent() 
        self.show()

    def setContent(self):
        layout = QBoxLayout(QBoxLayout.TopToBottom)
        layout.addWidget(widgets.Logo(self), 0, Qt.AlignTop)
        self.setLayout(layout)

这是从“小部件”模块导入的类

class Logo(QFrame):
    def __init__(self, parent):
        super().__init__(parent)
        layout = QBoxLayout(QBoxLayout.LeftToRight)
        text = QLabel("PyTitle", self)
        text.setAlignment(Qt.AlignCenter)
        text.setFont(QFont("impact", 48))
        layout.addWidget(text, 0, Qt.AlignCenter)
        self.setLayout(layout)
        self.show()

结果是这样的: 在此处输入图像描述

如果我强制调整 QLabel 和 QFrame 的大小,它是可见的,但仍位于左上角。

4

1 回答 1

1

您不能在 a 上设置布局QMainWindow,因为它已经内置了一个(用于处理停靠小部件、菜单栏、状态栏等)。

相反,设置一个central-widget,并将所有小部件和布局添加到其中:

class Launcher(QMainWindow):
    ...
    def setContent(self):
        widget = widgets.Logo(self)
        self.setCentralWidget(widget)

(PS:您只需要调用show()顶级窗口 - 对于所有其他子小部件,这是多余的)。

于 2016-04-25T02:03:46.063 回答