在QToolTip中设置图像时删除边距

我正在尝试将图像用作QLabel上的工具提示。我正在按照此处描述的方法进行操作:Use a picture or image in a QToolTip

但是我想删除该图像周围的自动边距。通过使边框在样式表中可见,并设置工具提示的背景颜色,我们可以检查附加边距不是图像的一部分,而是在边框内。但是,明确地将填充设置为“ 0px”也不会删除填充。

这是一个最小的示例:

#include "qapplication.h"
#include <QLabel>

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);

    QLabel hello("Hello world!",0) ;
    hello.resize(200,100);

    hello.setStyleSheet("qtooltip { padding: 0px; border: 2px solid green; background: red;}");

    QString html = QString("<img src='test.png'>");
    hello.setToolTip(html);

    hello.show();
    return a.exec();
}

这就是我从中得到的:

在QToolTip中设置图像时删除边距

图像正确。边框遵循样式表,但是我不知道红色区域来自何处。如何摆脱这种“利润”? 这是qtooltip错误吗?

看起来有点像这里描述的错误,但是我使用的是Qt5.12.5,应该在此处解决它:https://bugreports.qt.io/browse/QTBUG-59119

编辑:我在Windows上。图片为482x482px大。我曾经有人在Linux上试用过,那边也有多余的余地,但是要小得多。

zhangzhuhui 回答:在QToolTip中设置图像时删除边距

QToolTip的样式很时髦。它实际上是一个QLabel,但随后尝试从其父窗口小部件继承CSS ...但是还设置了一些硬编码的样式属性,例如margin和indent。而且该错误并没有得到修复,至少并非一直如此。

关于对图像的最佳处理方法是将qproperty-marginqproperty-indent设置为零(这将在QLabel上设置用于显示工具提示的属性):

QToolTip { 
  qproperty-margin: 0; 
  qproperty-indent: 0; 
  border: 2px solid green; 
  background: red; 
}

这仍然在侧面留下小的红色边距。我认为问题的一部分是图像缩放...我尝试了另一幅图像,它似乎覆盖了整个区域。另外,如果在QApplication上设置CSS(而不是示例中的QLabel实例),则填充会再次发生变化。

另一个技巧是在工具提示标签上设置pixmap属性(而不是使用HTML img标签):

QToolTip { 
  qproperty-pixmap: url(test.png);
  qproperty-margin: 0; 
  qproperty-indent: 0; 
  border: 2px solid green; 
  background: red; 
}

但是在这里,我们可以看到该bug(或类似的bug)-在最初的放映中,图像周围有红色填充,但是一旦移动鼠标,它便会重新缩放,而不再填充。

我得到的最好结果是使用CSS background-image属性,但是您需要知道图像大小才能工作。

QToolTip { 
  background-image: url(test.png); 
  min-width: 461px; 
  min-height: 469px; 
  border: 2px solid green;
}
本文链接:https://www.f2er.com/3160923.html

大家都在问