QHBoxLayout 中小部件之间的间距

Spacing between widgets in QHBoxLayout

本文关键字:之间 小部 QHBoxLayout      更新时间:2023-10-16

我正在尝试使用QtCreator创建一个GUI。对于此 GUI,我需要显示多个大小不同的图像,彼此相邻。这些图像应该相互接触。

我使用带有QHBoxLayoutQWidget,在其中添加包含图像的标签(具有不同的大小)。

根据相关问题,我应该使用 setSpacingsetContentsMargin 来删除这些空格,但这行不通;我试了好几次。

代码如下:

QWidget *widget = new QWidget(ui->tagcloud);
QHBoxLayout * l = new QHBoxLayout(widget);
ui->tagcloud->setWidget(widget);
for(int i=0;i<list.size();++i)
{
    QLabel *lab = new QLabel;
    QPixmap pic((list[i].imgPath).c_str());      //This fetches the image
    int sizeChange = 50 + (2*list[i].percent);   //Calculates the size of the image
    lab->setFixedSize(QSize(sizeChange, sizeChange));
    lab->setPixmap(pic);
    lab->setScaledContents(true);
    l->addWidget(lab);
    l->setSpacing(0);
}

但是,当我运行它时,间距保持不变(即绝对不为零)。如果我在布局中添加更多标签,间距似乎会变小。

谁能解释或帮助我?谢谢!

将间距设置为 0 并在前后添加拉伸对我有用:

l->addStretch();
for(int i = 0; i < list.size(); ++i)
{
    QLabel *lab = new QLabel;
    QPixmap pic((list[i].imgPath).c_str());      //This fetches the image
    int sizeChange = 50 + (2*list[i].percent);   //Calculates the size of the image
    lab->setFixedSize(QSize(sizeChange, sizeChange));
    lab->setPixmap(pic);
    lab->setScaledContents(true);
    l->addWidget(lab);
}
l->addStretch();
l->setSpacing(0);

我认为这也有效

l->setSizeConstraint(QLayout::SetMaximumSize);