setSpacing(int) 是设置 layout 中各部件的相邻距离,如果不设置,这个距离默认是 10。
addSpacing(int) 是在 setSpacing(int) 的基础之上再插入间距。这个距离可以是负值,表示后一个部件会覆盖在前一个部件上面。
QHBoxLayout *Layout = new QHBoxLayout(this);
Layout->setSpacing(5); //设置各部件的相邻距离
Layout->addSpacing(10); //插入间距10
Layout->addWidget(IconLabel);
Layout->addSpacing(20); //插入间距20
Layout->addWidget(TitleLabel);
Layout->addStretch(-10); //插入间距-10,使CloseButton部分覆盖在TitleLabel上
Layout->addWidget(CloseButton);
Layout->addStretch();
Layout->setContentsMargins(0, 0, 0, 0); //设置左上右下边距
setLayout(Layout);
按照上面代码设置后:
IconLabel和左边界的距离为10 + 5 = 15;
TitleLabel和IconLabel的距离为20 + 5 = 25;
CloseButton和TitleLabel的距离为-10 + 5 = -5,意味着CloseButton有5像素宽的部分覆盖在TitleLabel上。