简述
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
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:Qt 之 QSpacerItem https://www.yhzz.com.cn/a/14925.html