Qt 中的addWidget 布局类

在 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 方法的参数介绍,你可以根据实际需求选择合适的方法来添加窗口部件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值