在 QToolTip 中设置图像时删除边距
Remove margin when setting an image in a QToolTip
我正在尝试将图像用作 QLabel 上的工具提示。我正在按照此处描述的方法进行操作:
但是我在该图像周围自动获得了边距,我想将其删除。通过在样式表中使边框明显,并设置工具提示背景颜色,我们可以检查额外的边距不是图像的一部分,而是在边框内。然而,明确地将填充设置为“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();
}
这是我从中得到的:
图像正确。边框遵循样式表,但我不知道那个红色区域是从哪里来的。如何摆脱这个"margin"?
这是 QTooltip 错误吗?
有点像此处描述的错误,但我使用的是Qt5.12.5,应该可以解决:https://bugreports.qt.io/browse/QTBUG-59119
编辑:我在 windows。图片大小为 482x482px。我让某人在 Linux 上试了一下,不需要的边距也在那里,但要小得多。
QToolTip
样式很时髦。它实际上是一个 QLabel
但随后尝试从其父窗口小部件继承 CSS ......而且还设置了一些硬编码的样式属性,如边距和缩进。而且那个 bug 还没有修复,至少没有完全修复。
关于您的图像,我能做的最好的事情是将 qproperty-margin
和 qproperty-indent
设置为零(这会设置用于显示工具提示的 QLabel 上的属性):
QToolTip {
qproperty-margin: 0;
qproperty-indent: 0;
border: 2px solid green;
background: red;
}
这仍然会在两侧留下小的红色边距。我认为部分问题是图像缩放...我尝试使用不同的图像,它似乎覆盖了整个区域。此外,如果您在 QApplication 上设置 CSS(而不是您示例中的 QLabel 实例),则填充会再次发生一些变化。
另一个技巧是在工具提示标签上设置像素图 属性(而不是使用 HTML img 标签):
QToolTip {
qproperty-pixmap: url(test.png);
qproperty-margin: 0;
qproperty-indent: 0;
border: 2px solid green;
background: red;
}
但在这里我们可以看到该错误(或类似错误)——在初始显示时,图像周围有红色填充,但一旦移动鼠标,它就会重新正确缩放,不再有填充。
我得到的最好结果是使用 CSS 背景图像 属性,但您需要知道图像大小才能起作用。
QToolTip {
background-image: url(test.png);
min-width: 461px;
min-height: 469px;
border: 2px solid green;
}
我正在尝试将图像用作 QLabel 上的工具提示。我正在按照此处描述的方法进行操作:
但是我在该图像周围自动获得了边距,我想将其删除。通过在样式表中使边框明显,并设置工具提示背景颜色,我们可以检查额外的边距不是图像的一部分,而是在边框内。然而,明确地将填充设置为“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();
}
这是我从中得到的:
图像正确。边框遵循样式表,但我不知道那个红色区域是从哪里来的。如何摆脱这个"margin"? 这是 QTooltip 错误吗?
有点像此处描述的错误,但我使用的是Qt5.12.5,应该可以解决:https://bugreports.qt.io/browse/QTBUG-59119
编辑:我在 windows。图片大小为 482x482px。我让某人在 Linux 上试了一下,不需要的边距也在那里,但要小得多。
QToolTip
样式很时髦。它实际上是一个 QLabel
但随后尝试从其父窗口小部件继承 CSS ......而且还设置了一些硬编码的样式属性,如边距和缩进。而且那个 bug 还没有修复,至少没有完全修复。
关于您的图像,我能做的最好的事情是将 qproperty-margin
和 qproperty-indent
设置为零(这会设置用于显示工具提示的 QLabel 上的属性):
QToolTip {
qproperty-margin: 0;
qproperty-indent: 0;
border: 2px solid green;
background: red;
}
这仍然会在两侧留下小的红色边距。我认为部分问题是图像缩放...我尝试使用不同的图像,它似乎覆盖了整个区域。此外,如果您在 QApplication 上设置 CSS(而不是您示例中的 QLabel 实例),则填充会再次发生一些变化。
另一个技巧是在工具提示标签上设置像素图 属性(而不是使用 HTML img 标签):
QToolTip {
qproperty-pixmap: url(test.png);
qproperty-margin: 0;
qproperty-indent: 0;
border: 2px solid green;
background: red;
}
但在这里我们可以看到该错误(或类似错误)——在初始显示时,图像周围有红色填充,但一旦移动鼠标,它就会重新正确缩放,不再有填充。
我得到的最好结果是使用 CSS 背景图像 属性,但您需要知道图像大小才能起作用。
QToolTip {
background-image: url(test.png);
min-width: 461px;
min-height: 469px;
border: 2px solid green;
}