• Qt QSpacerItem


    简述

    QSpacerItem类为布局提供了一个空白区。

    比对

    通常情况下,不需要直接使用这个类,Qt内建布局管理器在操控空白区时提供以下功能:

    类                                                 函数
    QHBoxLayout                              addSpacing()、addStretch()、insertSpacing()、insertStretch()
    QGridLayout                                setRowMinimumHeight()、setRowStretch()、setColumnMinimumWidth()、setColumnStretch()

    使用
    在Qt之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)一节中我们讲解了水平布局、垂直布局的用法,下面我们以此为例,来讲解如何使用QSpacerItem。

    下面,我们以水平布局(其它布局类似)为例来讲解如何使用QSpacerItem。

    效果

    源码

     1 QPushButton *pButton1 = new QPushButton("One");
     2 QPushButton *pButton2 = new QPushButton("Two");
     3 QPushButton *pButton3 = new QPushButton("Three");
     4 QPushButton *pButton4 = new QPushButton("Four");
     5 QPushButton *pButton5 = new QPushButton("Five");
     6 
     7 QHBoxLayout *pHLayout = new QHBoxLayout();
     8 pHLayout->addWidget(pButton1);
     9 pHLayout->addWidget(pButton2);
    10 pHLayout->addWidget(pButton3);
    11 pHLayout->addWidget(pButton4);
    12 pHLayout->addWidget(pButton5);
    13 
    14 setLayout(pHLayout);
    15 
    16 // 输出默认的间距、外边距
    17 qDebug() << "Spacing: " << pHLayout->spacing();
    18 qDebug() << "Margin: " << pHLayout->margin();

    如上,我们获取默认的间距、外边距,分别为Spacing:10,Margin:0

    效果

    源码

    假如控件之间的间距不尽相同,那么就不能仅仅使用setSpacing()了,这时可以借助QSpacerItem来设置。

    下面,我们手动设置间距、外边距均为0,通过QSpacerItem及addSpacing()来设置按钮键的间距。

     1 QHBoxLayout *pHLayout = new QHBoxLayout();
     2 pHLayout->addWidget(pButton1);
     3 // 添加空白区宽20px、高20px
     4 pHLayout->addSpacerItem(new QSpacerItem(20, 20));
     5 pHLayout->addWidget(pButton2);
     6 // 添加间距10px
     7 pHLayout->addSpacing(10);
     8 pHLayout->addWidget(pButton3);
     9 // 添加空白区宽20px、高20px,宽度尽可能的缩小、放大
    10 pHLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
    11 pHLayout->addWidget(pButton4);
    12 pHLayout->addSpacing(2);
    13 pHLayout->addWidget(pButton5);
    14 
    15 pHLayout->setSpacing(0);
    16 pHLayout->setMargin(0);
    17 setLayout(pHLayout);

    我们可以看到,QSpacerItem(int w, int h, QSizePolicy::Policy hData = QSizePolicy::Minimum, QSizePolicy::Policy vData = QSizePolicy::Minimum)可以设置水平、垂直方向的大小调整策略,
    默认为QSizePolicy::Minimum。

    如上,我们构造了两个宽20px、高20px的空白区:

    QSizePolicy::Minimum:空白区不能小于该面积量,但可以在有效空间内放大。
    QSizePolicy::Expanding:空白区会随窗口的放大缩小而放大缩小。

  • 相关阅读:
    Hadoop学习笔记—12.MapReduce中的常见算法
    Hadoop学习笔记—11.MapReduce中的排序和分组
    Hadoop学习笔记—10.Shuffle过程那点事儿
    Hadoop学习笔记—9.Partitioner与自定义Partitioner
    Hadoop学习笔记—8.Combiner与自定义Combiner
    Hadoop学习笔记—7.计数器与自定义计数器
    Hadoop学习笔记—6.Hadoop Eclipse插件的使用
    Hadoop学习笔记—5.自定义类型处理手机上网日志
    Hadoop学习笔记—4.初识MapReduce
    Hadoop学习笔记—3.Hadoop RPC机制的使用
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14840064.html
Copyright © 2020-2023  润新知