Qt布局管理-QGridLayout

最近在开发一个嵌入式界面,主界面使用到了栅格布局,而且项目中没有用.ui文件,而是纯代码来设置界面。

一、QGridLayout的基本使用

  • 添加控件:addWidget()函数的使用

addWidget()重载一:

addWidget(控件名,行数,列数);

addWidget()重载二:

addWidget(控件名,行数,列数,控件长度占几行,控件长度占几列);

二、实际项目中的使用

此处以在栅格布局中加入四个按钮控件为例,运行窗口如下图:

首先新建一个以Qwidget为基类,且取消ui文件生成的使用的项目:

 然后.h文件代码如下:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMainWindow>
#include <QGridLayout>
#include <QWidget>
#include <QLabel>
#include <QPushButton>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:

    QGridLayout *p_layout;
    QPushButton *btn1;
    QPushButton *btn2;
    QPushButton *btn3;
    QPushButton *btn4;
};
#endif // WIDGET_H

.cpp文件代码如下:

#include "Widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

    btn1 = new QPushButton(this);
    btn1->setText("一区:顶部菜单栏");
    btn1->setFixedHeight(40);
    btn1->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    btn2 = new QPushButton(this);
    btn2->setText("二区:侧边栏");
    btn2->setFixedWidth(100);
    btn2->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    btn3 = new QPushButton(this);
    btn3->setText("三区:底部");
    btn3->setFixedHeight(40);
    btn3->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    btn4 = new QPushButton(this);
    btn4->setText("四区:子窗口显示区");
    btn4->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);

    p_layout = new QGridLayout();

    p_layout->setContentsMargins(0,0,0,0);
    p_layout->setSpacing(0);
    p_layout->addWidget(btn1,0,0);
    p_layout->addWidget(btn2,0,1,3,1);
    p_layout->addWidget(btn3,2,0);
    p_layout->addWidget(btn4,1,0);

    setLayout(p_layout);
}

Widget::~Widget()
{
}

此处代码实现了将栅格布局分为三行,两列的四个区,其中一区和三区设置固定高度为40,二区设定固定宽度为100。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值