Qt 之 QSpacerItem
简述
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:空白区会随窗口的放大缩小而放大缩小。
关于”大小策略”后面章节会进行详细讲解,敬请期待。
原文连接:https://blog.csdn.net/liang19890820/article/details/51614868
- 分享
- 举报
-
浏览量:5173次2017-11-16 11:35:44
-
浏览量:2859次2020-08-21 19:39:43
-
浏览量:5041次2020-05-08 15:46:11
-
浏览量:3388次2020-05-07 19:43:16
-
浏览量:3702次2020-08-18 19:54:58
-
浏览量:4800次2020-08-11 18:51:18
-
浏览量:2520次2020-08-14 15:09:41
-
浏览量:6487次2020-08-15 17:22:26
-
浏览量:4747次2020-08-15 17:29:07
-
浏览量:3782次2020-08-21 19:40:26
-
浏览量:4912次2020-08-11 17:39:02
-
浏览量:2608次2019-12-05 16:39:49
-
浏览量:10486次2020-08-30 00:41:53
-
浏览量:1412次2020-08-30 00:47:29
-
浏览量:2433次2022-12-08 23:43:55
-
浏览量:1959次2020-08-22 16:10:10
-
浏览量:3368次2020-08-18 20:09:59
-
浏览量:2289次2020-06-05 10:56:54
-
浏览量:3139次2020-09-20 22:17:04
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
在学了在学了!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明