Qt QLabel setPixmap 不需要的填充

Qt QLabel setPixmap unwanted padding

本文关键字:填充 不需要 setPixmap QLabel Qt      更新时间:2023-10-16

我有一个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));

问题是文档中解释的label_titlewordwrap。label_main的行为很奇怪,很难在label_title中找到原因。

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

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

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

如果没有代码示例,很难确切地看出出了什么问题。

我希望这有所帮助。