如何停止QGridLayout元素的扩展

问题描述 投票:0回答:1

我有几个标签(在按钮点击时动态生成,可以从配置文件读取的数字不同)并添加到QGridLayout。在加载时看起来如下......

enter image description here

这些标签的生成和添加如下

QGridLayout * layout = new QGridLayout(ui->pageInputWindow);
layout->setSpacing(5);
layout->setMargin(0);
ui->pageInputWindow->setLayout(layout);
// for question purpose I take number of row and col to 3
// but in actual they will be read from configuration file
for(int row = 0; row < 3; row ++)
{
     for(int col = 0; col < 3; col++)
     {
          QLabel * placeHolder = new QLabel(ui->pageInputWindow);
          placeHolder->setText("LABEL "+QString::number(10*(row+1) + col + 1));
          layout->addWidget(placeHolder, row, col);
     }
}

这些标签放置在此处用于通过在选择时设置捕获的视频帧的像素图来呈现视频流。我把pix设为....

// I am getting img object from other class, below code is just a snap of it.
// You can assume img as valid QImage objcet
QImage img 
selectedLabel->setPixmap(QPixmap::fromImage(img).scaled(selectedLabel->size(),Qt::KeepAspectRatio, Qt::FastTransformation));

我理想的情况是,当我选择任何标签时,它会保留其大小,这是在运行时根据配置设置加载的。但是当我开始下面的事件发生时。

enter image description here

突然选择的标签(见'LABEL 11'位置的黑色图片标签)开始扩展甚至导致应用程序扩展。理想我想要上面的事件如下(假设白色背景是视频帧)没有任何扩展。

enter image description here

我的问题是如何在设置像素图时停止这种不合需要的标签扩展?

c++ qt user-interface qt5
1个回答
1
投票

将标签的大小策略设置为忽略:

placeHolder->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
© www.soinside.com 2019 - 2024. All rights reserved.