繁体   English   中英

在Qt中获取图像标签的实际边距

[英]Get real margins of image label in Qt

我的应用程序有一个自定义的QSS,我有一个带有图像的QLabel。 图像具有很大的页边距,这来自样式。

标签的外观是这样,QPixmap是纯红色的以显示实际内容,因此白色部分是空白:

在此处输入图片说明

页边距分别是顶部和底部11个像素,左侧7个像素,右侧45个像素。 我使用图像编辑器对其进行了测量,然后将边框算作边距的一部分。

我尝试了以下功能:

qDebug() << label->contentsMargins() << label->margin();

但是,即使存在(较大)边距,输出还是QMargins(0, 0, 0, 0) 0 如何计算图像标签的实际/实际边距?

在研究了QLabel :: paintEvent()源代码之后,最终设法获得了实际利润。 他们这样做:

QRect cr = label->contentsRect();
cr.adjust(label->margin(), label->margin(), -label->margin(), -label->margin());

编辑:

在我的特定情况下,标签似乎是从父级的样式表获取填充的,所以label->contentsMargins()返回零,因为我在显示之前就调用了它。

也就是说,此代码:

qDebug() << label->contentsMargins() << label->margin() << label->contentsRect();
label->show();
qDebug() << label->contentsMargins() << label->margin() << label->contentsRect();

产生以下输出:

QMargins(0, 0, 0, 0) 0 QRect(0,0 62x31) 
QMargins(7, 1, 7, 1) 0 QRect(7,1 36x31) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM