Qt控件边距的奇怪行为

时间:2014-07-28 16:15:10

标签: qt qt5.2

我刚刚开始使用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)

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

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

QMainWindow课程并不是为了直接添加小部件而设计的。无论你看到什么结果都是由于这个事实。

"边距"你看到的并不是真正的利润。由于QLabelQFrame,因此您可以启用其框架以查看它没有边距 - 只是文本偏离边缘,并且设计符合要求。您可以类似地在QPushButton上覆盖相同大小的半透明矩形,以查看也没有边距,只是样式添加了自己的平台特定边距。不要将平台样式机制误认为样式表:它们是两个独立的机制,大多是独占的,后者的使用会使前者的效果失效,除了少数例外。例如,样式表间距/边距/填充是任何平台样式要求的附加值。

有关如何在没有子类化的情况下在任何窗口小部件上显示叠加层的示例,请参阅this answer