美文网首页
QLayout 布局常见使用方法

QLayout 布局常见使用方法

作者: 猩猩隊長 | 来源:发表于2018-10-26 01:49 被阅读0次

常用的三种布局方法:

水平布局类QHBoxLayout
垂直布局类QVBoxLayout
网格布局类QGridLayout

头文件:

include <QHBoxLayout>
include <QVBoxLayout>
include <QGridLayout>

水平布局:

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

    QWidget *w = new QWidget;
    QPushButton* button00 = new QPushButton("0");
    QPushButton* button01 = new QPushButton("1");
    QPushButton* button02 = new QPushButton("2");
    QPushButton* button03 = new QPushButton("3");
    QPushButton* button04 = new QPushButton("4");
    QHBoxLayout* layout = new QHBoxLayout();

    layout->addWidget(button00);
    layout->addWidget(button01);
    layout->addWidget(button02);
    layout->addWidget(button03);
    layout->addWidget(button04);

    w->setLayout(layout);
    w->show();
    
    return a.exec();
}

效果图:

1.jpg

垂直布局:

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

    QWidget *w = new QWidget;
    QPushButton* button00 = new QPushButton("0");
    QPushButton* button01 = new QPushButton("1");
    QPushButton* button02 = new QPushButton("2");
    QPushButton* button03 = new QPushButton("3");
    QPushButton* button04 = new QPushButton("4");
    QVBoxLayout* layout = new QVBoxLayout();

    layout->addWidget(button00);
    layout->addWidget(button01);
    layout->addWidget(button02);
    layout->addWidget(button03);
    layout->addWidget(button04);

    w->setLayout(layout);
    w->show();
    
    return a.exec();
}

效果图:

2.jpg

网格布局:

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

    QWidget *w = new QWidget;
    QPushButton* button00 = new QPushButton("0");
    QPushButton* button01 = new QPushButton("1");
    QPushButton* button02 = new QPushButton("2");
    QPushButton* button03 = new QPushButton("3");
    QPushButton* button04 = new QPushButton("4");
    QPushButton* button05 = new QPushButton("5");
    QPushButton* button06 = new QPushButton("6");
    QPushButton* button07 = new QPushButton("7");
    QPushButton* button08 = new QPushButton("8");
    QPushButton* button09 = new QPushButton("9");

    QGridLayout* layout = new QGridLayout();

    //QGridLayout需指定控件位置,以0开始
    layout->addWidget(button00, 0, 0);
    layout->addWidget(button01, 0, 1);
    layout->addWidget(button02, 0, 2);
    layout->addWidget(button03, 1, 0);
    layout->addWidget(button04, 1, 1);
    layout->addWidget(button05, 1, 2);
    layout->addWidget(button06, 2, 0);
    layout->addWidget(button07, 2, 1);
    layout->addWidget(button08, 2, 2);
    //addWidget的重载,可理解成:从第4行第一位开始,占用3个位置
    layout->addWidget(button09, 3, 0, 3, 3);

    w->setLayout(layout);
    w->show();

    return a.exec();
}

效果图:

3.jpg

嵌套布局:

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

    QWidget *w = new QWidget;
    QPushButton* button00 = new QPushButton("0");
    QPushButton* button01 = new QPushButton("1");
    QPushButton* button02 = new QPushButton("2");
    QPushButton* button03 = new QPushButton("3");
    QPushButton* button04 = new QPushButton("4");
    QPushButton* button05 = new QPushButton("5");
    QPushButton* button06 = new QPushButton("6");

    QHBoxLayout* layoutH = new QHBoxLayout();
    QVBoxLayout* layoutV = new QVBoxLayout();

    layoutH->addWidget(button00);
    layoutH->addWidget(button01);
    layoutH->addWidget(button02);
    layoutH->addWidget(button03);

    layoutV->addWidget(button04);
    layoutV->addWidget(button05);
    layoutV->addWidget(button06);

    //将纵向布局layoutV加入到横向布局layoutH中
    layoutH->addLayout(layoutV);
    
    w->setLayout(layoutH);
    w->show();

    return a.exec();
}

效果图:

4.png

当改变顺序时:

    layoutH->addWidget(button00);
    layoutH->addWidget(button01);
    layoutH->addLayout(layoutV); //改变了插入的位置
    layoutH->addWidget(button02);
    layoutH->addWidget(button03);

    layoutV->addWidget(button04);
    layoutV->addWidget(button05);
    layoutV->addWidget(button06);

效果图:

5.jpg

构建子控件时不需指定parent,布局自动指定parent with QWidget::setParent()
布局中的控件是安装此布局的界面的子空间,控件只能以控件作为parent

相关文章

  • QLayout 布局常见使用方法

    常用的三种布局方法: 水平布局类QHBoxLayout垂直布局类QVBoxLayout网格布局类QGridLayo...

  • Day03

    布局管理器 QLayout是布局管理器的基类,是一个抽象基类。最常用的QLayout的几个子类,分别是QBoxLa...

  • QSplitter拆分窗口

    QSplitter拆分窗口: 不同QSplitter对象通过指定父子关系来完成嵌套(和布局QLayout一样) Q...

  • 2019-02-05 8 关于QLayout的用法

    QLayout是一个抽象类,不可视,只能用来布局窗口的表现方式。 QHBoxLayout和QVBoxLayout是...

  • 懒加载fragment

    用于viewpager+fragment布局 使用方法

  • 前端开发-常见CSS布局

    常见的两列布局 float浮动布局 flex布局 常见的三列布局 float浮动布局 position定位 fle...

  • CSS全面解析之二:CSS 布局

    布局的简单回溯布局重要性的介绍 常见的布局方法常见布局方法 现代化布局 flexbox 布局,核心代码如下。如果要...

  • 深入理解Android布局就看这个!

    一、常见布局 线性布局——LinearLayout相对布局——RelativeLayout帧布局——FrameLa...

  • css笔记-1/css的学习思路

    CSS 3 核心思想 响应式堆叠上下文常见布局:Float 布局、Flex 布局常见动画:Fullpage、轮播、...

  • Flex弹性布局介绍

    常见的布局有哪些? 1.最常见布局 浮动、定位 2.自适应布局 百分比布局 3.响应式布局 @media媒体...

网友评论

      本文标题:QLayout 布局常见使用方法

      本文链接:https://www.haomeiwen.com/subject/yebhtqtx.html