Qt QLabel setPixmap不需要的填充

时间:2012-09-25 22:47:04

标签: c++ qt margin padding qpixmap

我在两个维度都有一个QLabel,其大小政策为QSizePolicy::Expanding,我希望在其中显示QLabel::setPixmap的图片。主窗口不应该调整大小,这就是为什么我在设置QLabel的大小之前缩放像素图。

图像设置正确,但在顶部和底部有一个我不想要的填充,顶部12px,底部13px。 setPixmap - 命令调整QLabel和主窗口的大小。我无法弄清楚为什么。 QLabel的样式表是空的。我可以为QLabel背景着色,看看额外的空间是QLabel(或像素图的边缘)的填充。当我尝试调整主窗口的大小时,我无法让它变得如此之小以至于这个额外的边框消失了,我可以放大它并且所有边上的填充增加(如预期的那样),但我不能让它变小以摆脱这个额外的保证金。

有人知道是什么原因引起的吗?

编辑:

添加了一些代码。 在这些行ui->label_title为空之前,label_title位于label_main之上的同一垂直布局中。我只是想,当一些文本设置为label_title时,布局还没有更新,所以下一行返回旧的大小,然后图像太大,因为标题需要一些空间,主窗口必须调整大小。是否有更新布局的命令,因此其中的所有小部件都会获得新的大小? layout->update();没有工作。

ui->label_title->setText(imgNames.at(crntItemNr));
QSize size = ui->label_main->size();
ui->label_main->setPixmap(images.at(crntItemNr).scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation));

2 个答案:

答案 0 :(得分:1)

问题是doc所解释的label_title的wordwrap。 label_main的行为很奇怪,这使得很难在label_title中找到原因。

答案 1 :(得分:0)

可能是因为您对窗口大小使用了错误的测量值。您正在考虑盒子模型,访问几何体,它的测量方式不同:

http://qt-project.org/doc/qt-5.0/stylesheet-customizing.html

http://qt-project.org/doc/qt-4.8/application-windows.html#window-geometry

如果没有代码示例,很难确切地看出错误。

我希望有所帮助。