Qt 中的addWidget 布局类

发布于:2025-03-04 ⋅ 阅读:(21) ⋅ 点赞:(0)

在 Qt 里,addWidget 是布局类(如 QVBoxLayoutQHBoxLayoutQGridLayout 等)用于添加窗口部件的重要方法,不同布局类的 addWidget 方法参数有所差异,下面为你详细介绍:

1. QVBoxLayoutQHBoxLayout

QVBoxLayout 用于垂直排列子部件,QHBoxLayout 用于水平排列子部件,它们的 addWidget 方法主要有以下两种重载形式:

形式一:void addWidget(QWidget *widget)
  • 参数
    • widget:这是一个指向 QWidget 或其派生类对象的指针,代表要添加到布局中的窗口部件,比如 QPushButtonQLabel 等。
  • 示例代码
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    QVBoxLayout *layout = new QVBoxLayout(&window);

    QPushButton *button = new QPushButton("Click me", &window);
    layout->addWidget(button);

    window.show();
    return app.exec();
}
形式二:void addWidget(QWidget *widget, int stretch = 0, Qt::Alignment alignment = Qt::Alignment())
  • 参数
    • widget:要添加到布局中的窗口部件指针。
    • stretch:伸缩因子,默认为 0。它决定了该部件在布局中所占的伸缩比例,数值越大,在布局空间变化时该部件伸缩得越多。
    • alignment:对齐方式,默认为 Qt::Alignment(),即没有特殊的对齐设置。可以使用 Qt::AlignLeftQt::AlignTop 等标志来指定部件的对齐方式。
  • 示例代码
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    QVBoxLayout *layout = new QVBoxLayout(&window);

    QPushButton *button = new QPushButton("Click me", &window);
    layout->addWidget(button, 1, Qt::AlignCenter);

    window.show();
    return app.exec();
}

2. QGridLayout

QGridLayout 用于将子部件排列成网格状,它的 addWidget 方法有多种重载形式,下面介绍常见的两种:

形式一:void addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
  • 参数
    • widget:要添加到布局中的窗口部件指针。
    • row:部件所在的行索引,从 0 开始计数。
    • column:部件所在的列索引,从 0 开始计数。
    • alignment:对齐方式,默认为 Qt::Alignment()
  • 示例代码
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    QGridLayout *layout = new QGridLayout(&window);

    QPushButton *button = new QPushButton("Click me", &window);
    layout->addWidget(button, 0, 0);

    window.show();
    return app.exec();
}
形式二:void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
  • 参数
    • widget:要添加到布局中的窗口部件指针。
    • fromRow:部件起始的行索引,从 0 开始计数。
    • fromColumn:部件起始的列索引,从 0 开始计数。
    • rowSpan:部件跨越的行数。
    • columnSpan:部件跨越的列数。
    • alignment:对齐方式,默认为 Qt::Alignment()
  • 示例代码
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget window;
    QGridLayout *layout = new QGridLayout(&window);

    QPushButton *button = new QPushButton("Click me", &window);
    layout->addWidget(button, 0, 0, 2, 1);

    window.show();
    return app.exec();
}

以上就是 Qt 中常见布局类 addWidget 方法的参数介绍,你可以根据实际需求选择合适的方法来添加窗口部件。


网站公告

今日签到

点亮在社区的每一天
去签到