警告

本节包含从 C++ 自动转换为 Python 的代码片段,可能包含错误。

部件教程 - 使用布局#

通常,子部件是通过布局对象在窗口内排列,而不是通过显式指定位置和大小。这里,我们构建一个标签和行编辑器部件,我们希望它们并排排列。

from PySide6 import QtWidgets
if __name__ == "__main__":

    app = QApplication([])
    window = QWidget()
    label = QLabel(QApplication.translate("windowlayout", "Name:"))
    lineEdit = QLineEdit()
    layout = QHBoxLayout()
    layout.addWidget(label)
    layout.addWidget(lineEdit)
    window.setLayout(layout)
    window.setWindowTitle(
        QApplication.translate("windowlayout", "Window layout"))
    window.show()
    sys.exit(app.exec())

widgets-tutorial-windowlayout1

我们构建的布局对象使用 addWidget() 函数管理传入其内的部件的位置和大小。布局本身通过调用 setLayout() (PySide6.QtWidgets.QWidget.setLayout)传递给窗口。布局本身通过其对部件(和其他布局)的效果才能可见。

在上面的例子中,每个部件的所有权并不立即清晰。由于我们构造的部件和布局没有父对象,我们预计会看到一个空的窗口和两个独立的窗口,一个包含标签,另一个包含行编辑器。但是,当我们告诉布局管理标签和行编辑器并设置窗口布局时,这两个部件和布局本身都会被“重新父化”,成为窗口的子元素。

示例项目 @ code.qt.io