0

我刚刚开始使用 Qt (5.3) 并遇到了一些控件出现的边距我无法控制的事实。

首先,我尝试将 QLabel 和 QPushButton 放在 QMainWindow

window = new QMainWindow;
label = new QLabel( title, window );

在这种情况下,标签在顶部出现 12 像素的边距(见图)。QPushButton 以 1 像素的顶部和左侧边距出现。但是如果我插入带有边框的 QFrame,它就会出现没有任何边距。

http://i.stack.imgur.com/Dsll7.jpg

所以边距似乎是 QLabel 和 QPushButton 的属性。但:

当我尝试在窗口和控件之间添加额外的 QFrame 时:

window = new QMainWindow;
frame = new QFrame(window );
label = new QLabel( title, frame);

我得到了不同的图片: QLabels 上边距缩短到 1 像素 QPushButton 1 像素边距保持不变,但按钮的高度已经改变

我试过: setStyleSheet( "padding:0px" ) 和 setContentsMargins( 0, 0, 0, 0 )

对于所有元素,但没有任何成功。

任何帮助将不胜感激

4

1 回答 1

0

该类QMainWindow并非旨在将小部件直接添加到其中。无论你看到什么结果都是由于这个事实。

您看到的“边距”并不是真正的边距。由于 aQLabel是 a QFrame,您可以启用它的框架来查看它没有边距 - 只是文本从边缘偏移,这是设计使然。您可以类似地在 a 上覆盖相同大小的半透明矩形QPushButton以查看也没有边距,只是样式添加了自己的特定于平台的边距。不要将平台样式机制误认为样式表:它们是两个独立的机制,并且大多是互斥的,使用后者会禁用前者的效果,很少有例外。例如,样式表间距/边距/填充添加到平台样式要求的任何内容中。

有关如何在没有子类化的情况下在任何小部件上显示叠加层的示例,请参阅此答案。

于 2014-07-28T16:41:33.320 回答