[英]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.