小部件教程 - 使用布局

通常,子小部件是使用布局对象而非显式指定位置和大小来排列在窗口内部的。在此,我们构建一个标签和行编辑小部件,我们希望将它们并排排列。

#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget window;
    QLabel *label = new QLabel(QApplication::translate("windowlayout", "Name:"));
    QLineEdit *lineEdit = new QLineEdit();

    QHBoxLayout *layout = new QHBoxLayout();
    layout->addWidget(label);
    layout->addWidget(lineEdit);
    window.setLayout(layout);
    window.setWindowTitle(
        QApplication::translate("windowlayout", "Window layout"));
    window.show();
    return app.exec();
}

我们构建的布局对象通过addWidget()函数管理提供给它的自定义小部件的位置和大小。布局本身是通过调用setLayout()传递给窗口本身的。布局只通过它们对所管理的小部件(和其它布局)产生的效果才可见。

在上面的示例中,每个小部件的所有权并不立即清晰。由于我们在没有父对象的情况下构建小部件和布局,我们本希望看到一个空窗口和两个包含标签和行编辑器的独立窗口。然而,当我们将布局告诉它管理标签和行编辑并设置窗口上的布局时,小部件和布局自身都被“重新归入”窗口的子窗口中。

示例项目在 code.qt.io

© 2024 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。本提供的文档是在自由软件基金会发布的GNU自由文档许可证版本1.3的条款下提供的。Qt及其相关标志是芬兰的The Qt Company Ltd.及其全球分支机构在全世界范围内的商标。所有其他商标均为各自所有者的财产。