Qt之QSpacerItem

简介: 简述QSpacerItem类为布局提供了一个空白区。简述比对使用效果源码效果源码比对通常情况下,不需要直接使用这个类,Qt内建布局管理器在操控空白区时提供以下功能:类 函数QHBoxLayout addSpacing()、addStretch()、insertSpacing()、insertStre

简述

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

比对

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

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

使用

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

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

效果

这里写图片描述

源码

QPushButton *pButton1 = new QPushButton("One");
QPushButton *pButton2 = new QPushButton("Two");
QPushButton *pButton3 = new QPushButton("Three");
QPushButton *pButton4 = new QPushButton("Four");
QPushButton *pButton5 = new QPushButton("Five");

QHBoxLayout *pHLayout = new QHBoxLayout();
pHLayout->addWidget(pButton1);
pHLayout->addWidget(pButton2);
pHLayout->addWidget(pButton3);
pHLayout->addWidget(pButton4);
pHLayout->addWidget(pButton5);

setLayout(pHLayout);

// 输出默认的间距、外边距
qDebug() << "Spacing: " << pHLayout->spacing();
qDebug() << "Margin: " << pHLayout->margin();

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

效果

这里写图片描述

源码

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

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

QHBoxLayout *pHLayout = new QHBoxLayout();
pHLayout->addWidget(pButton1);
// 添加空白区宽20px、高20px
pHLayout->addSpacerItem(new QSpacerItem(20, 20));
pHLayout->addWidget(pButton2);
// 添加间距10px
pHLayout->addSpacing(10);
pHLayout->addWidget(pButton3);
// 添加空白区宽20px、高20px,宽度尽可能的缩小、放大
pHLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
pHLayout->addWidget(pButton4);
pHLayout->addSpacing(2);
pHLayout->addWidget(pButton5);

pHLayout->setSpacing(0);
pHLayout->setMargin(0);
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:空白区会随窗口的放大缩小而放大缩小。

关于”大小策略”后面章节会进行详细讲解,敬请期待。

目录
相关文章
|
5月前
|
资源调度 前端开发 JavaScript
qs库--介绍
qs库--介绍
284 0
|
2月前
解决QT中报错xxx.h:4:10: ‘QMainWindow‘ file not found
解决QT中报错xxx.h:4:10: ‘QMainWindow‘ file not found
126 0
Anaconda Navigator:could not find or load the QT platform plugin &quot;window in&quot;
Anaconda Navigator:could not find or load the QT platform plugin &quot;window in&quot;
230 0
Anaconda Navigator:could not find or load the QT platform plugin &quot;window in&quot;
SAP PM入门系列31 - IW40 Display Orders (Multilevel)
SAP PM入门系列31 - IW40 Display Orders (Multilevel)
SAP PM入门系列31 - IW40 Display Orders (Multilevel)
|
监控 BI
SAP PM入门系列30 - IW39 Display Orders
SAP PM入门系列30 - IW39 Display Orders
SAP PM入门系列30 - IW39 Display Orders
SAP PM入门系列22 - IH06 Display Functional Location
SAP PM入门系列22 - IH06 Display Functional Location
SAP PM入门系列22 - IH06 Display Functional Location
SAP PM入门系列27 - IW29 Display Notifications
SAP PM入门系列27 - IW29 Display Notifications
SAP PM入门系列27 - IW29 Display Notifications
GM6 pageset - Cache get scenario /ui2/cl_pfcg_utils
Created by Wang, Jerry, last modified on Apr 20, 2015
142 0
GM6 pageset - Cache get scenario /ui2/cl_pfcg_utils
|
Python
Could not import backend for traitsui. Make sure you have a suitable UI toolkit like PyQt/PySide or
Could not import backend for traitsui. Make sure you have a suitable UI toolkit like PyQt/PySide or
962 0