c++ - Qt标签中的QLabel边距和样式表填充

标签 c++ qt qtstylesheets

我有一个标签,我使用 setMargin() 在样式表中设置了填充和边距。

ui->label->setPixmap(redRectWithGreenBorder(80, 40));
ui->label->setStyleSheet("QLabel {border: 1px solid gray;border-radius: 2px;background-color: white;padding: 0px 5px 10px 15px;}");
ui->label->setMargin(5);

但这是现实中的样子:

enter image description here

可见边距为 5、10、15 和 20(我用图像编辑器检查过)。也就是说,它们等于此边样式表的值加上 margin() 的值,即 0+5、5+5、10+5、20+5。

但是,关于 setMargin() 的文档是这样说的:

margin : int This property holds the width of the margin.

The margin is the distance between the innermost pixel of the frame and the outermost pixel of contents.

The default margin is 0.

如果我从表面上看文档,我会期望边距是内容和边框之间的实际距离。但事实并非如此。相反,边距和样式表填充的总和是实际边距。

我的问题是,文档中在哪里描述了这种行为?文档中是否还有其他地方指定了我错过的这种行为?

最佳答案

样式表填充适用于所有 控件,甚至是那些不基于QLabel 的控件。它存在于任何特定于控制的机制之外。 margin 是早于样式表的 QLabel 特定属性;它在 Qt 4.0(至少)中可用。样式表后来出现在 Qt 4.2 中。

另一种思考方式:行为可以从只有一个 margin 属性而不是四个这一事实推断出来。此属性与样式表填充无关,因为后者为您提供了 4 个单独的填充值。除了将它们相加之外,没有其他方法可以调和它们。

另外,请注意 marginpadding 是不同的术语。样式表指定填充。 QLabel 指定边距。它们可能是同义词,但这在这里无关紧要。它们在QLabel 的设置中仍然是不同的概念。视觉结果是由于两者。 4.0 margin 的行为必须保留在 Qt 4.2 中,以免破坏现有代码。

关于c++ - Qt标签中的QLabel边距和样式表填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24392380/

相关文章:

C++ 字计数器

c++ - Qt 运行时错误

qt - 如何在 Qt WebView 中显示嵌入的 html

c++ - 我可以从样式表 (qss) 更改自定义动态属性吗?

qt - QLabel改变字体颜色而不改变任何其他样式

c++ - 我必须为我的 C++ 类字段使用指针吗?

c++ - 在C++中均匀生成随机数

python - 为什么继承另一个类的类不会产生与 'another class' 相同的结果?

c++ - 使用 GCC : Get Call Count of Functions in a Shared Library 进行分析

c++ - 为什么这个可滚动区域不能保持我想要的图像大小?