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

标签 c++ qt qlabel

我的应用程序有一个自定义 QSS,我有一个带有图像的 QLabel。然而,图像有很大的边距,这是由样式决定的。

这是标签的样子,QPixmap 是实心红色以显示实际内容,所以白色部分是边距:

enter image description here

顶部和底部的边距为 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) 

关于c++ - 在Qt中获取图像标签的实际边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340833/

相关文章:

c++ - 将LPVOID位图指针转换为QPixmap

c++ - QProgressDialog 在暂停期间不绘制

c++ - Qt中多个ui窗体的切换

c++ - 将图像保存到 Qt 中动态创建的目录中

c++ - 为什么我必须通过this指针访问模板基类成员?

c++ - Xerces/Xalan : UNC path as argument for document function?

c++ - MS Windows 中的 QT 和 native OpenGL 支持

c++ - DirectX 11 文件无法打开源文件

c++ - Qt moc_include文件问题

c++ - 运行应用程序时出现运行时错误,原因是 Qlable