qt网格布局设置内容边距不起作用

时间:2014-05-16 19:44:12

标签: c++ qt

我想在网格布局中放置一堆垂直布局,并且这些垂直布局的计数是未定义的。在每个垂直布局中,我在标签中有一张照片,在照片下面有另一个标签中的标题,我将这个垂直布局插入到网格布局中:

int j = 0;
    ui->profile_post_layout->setContentsMargins(0,0,0,0);
    for(int i = 0; i < posts.size(); i++)
    {
        QPixmap * pic = new QPixmap(QString::fromStdString(url));
        QPixmap* mypix = new QPixmap(pic->scaled(QSize(50,50),  Qt::KeepAspectRatio));
        QLabel* photo = new QLabel;
        photo->setPixmap(*mypix);
        QLabel* label = new QLabel(QString::fromStdString(title));
        QVBoxLayout* layout = new QVBoxLayout;
        layout->addWidget(photo);
        layout->addWidget(label);
        layout->setContentsMargins(0,0,0,0);
        ui->profile_post_layout->addLayout(layout,j,i);
        if(i % 4 == 0)
            j++;
    }

但结果是带有标签的照片距离太远,这意味着设置的内容边距不起作用。这是screenshot。 怎么处理这个问题? TNX。

1 个答案:

答案 0 :(得分:0)

如果问题是照片和标签之间的距离太远,这不是因为分配setContentMargins(0,0,0,0),实际上通过这样做,它会进一步缩短距离(删除边距)。

在布局中使照片和标签紧凑的一种方法是,您可以尝试在网格布局中在循环的末尾添加垂直间隔。

如果您遇到类似布局问题的问题,可以随时通过ui设计师创建一个简单的测试,并在编码中对您的实际布局进行实验,这有助于理解问题。