QGridLayout 在widget上布局多个固定大小的QPushButton,并动态适应widget窗口大小

在 Qt 中使用 QGridLayout 在一个 QWidget 上布局多个固定大小的 QPushButton 并使它们动态适应窗口大小,通常涉及以下步骤:

  1. 为每个 QPushButton 设置固定大小。
  2. 将这些按钮添加到 QGridLayout 中。
  3. 使用弹簧(QSpacerItem)在布局中添加必要的空白区域,以便在窗口大小改变时保持按钮的相对位置。

以下是一个示例代码,展示如何实现这一点:

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QSpacerItem>

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

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

    // 设置按钮并添加到布局中
    const int buttonSize = 100;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            QPushButton *button = new QPushButton(QString("按钮 %1").arg(i * 3 + j + 1));
            button->setFixedSize(buttonSize, buttonSize); // 设置固定大小
            layout->addWidget(button, i, j);
        }
    }

    // 添加弹簧以使布局在窗口变化时适应
    layout->setRowStretch(3, 1);
    layout->setColumnStretch(3, 1);

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

在这个例子中,我们创建了一个 3x3 的按钮网格,每个按钮都有固定的大小。通过调用 layout->setRowStretchlayout->setColumnStretch,我们为布局的最后一行和最后一列添加了弹簧。这些弹簧在窗口大小改变时会扩展或收缩,从而保持按钮网格的中心位置。

请注意,根据你的具体布局需求,你可能需要调整弹簧的位置或添加更多的弹簧来实现所需的布局效果。

删除原有布局:

    QWidget *pWidget = new QWidget();
    QLayout *pLayout = pWidget ->layout();
    if(nullptr != pLayout)
    {
        delete pLayout;
    }
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值