【发布时间】:2020-01-23 00:41:23
【问题描述】:
我知道如何调整小部件的填充属性:
widget.setStyleSheet("padding: 5px 5px 5px 5px");
或
widget.setStyleSheet("padding: 5px");
所有边的填充相同。
但是我如何获得当前的填充?我看不到qDebug() << padding 的方法。
如果用例很重要,我有一个带有三个组合框的垂直布局,已经将布局内容边距设置为零并且组件周围的空间消失了。但组合框之间仍有一些垂直空间。
QWidget *widget = new QWidget;
QVBoxLayout *vLayout = new QVBoxLayout(widget);
vLayout->setContentsMargins(0,0,0,0);
vLayout->addWidget(new QComboBox);
vLayout->addWidget(new QComboBox);
vLayout->addWidget(new QComboBox);
QToolBar *toolbar = new QToolBar;
toolbar->addWidget(widget);
addToolBar(toolbar);
通过在布局中设置垂直空间,我得到:
参考:https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qcombobox
【问题讨论】:
-
您是否需要专门用于组合框?当“扩展”时,填充适用于项目(如果我没记错的话)。
-
对于某些小部件 contentsMargins 返回您想要的,但如果小部件在填充顶部有更多边距(来自子/布局/框架),则不会返回你想要什么。
-
问题更新了一些用例的描述。
-
您的意思是说(在您的补充中)问题出在您隐藏连击的时候吗?不清楚你的意思。如果您试图隐藏小部件并删除它们之间的布局间距,您需要变得更聪明(这是一个 PITA)或者只是从布局中删除小部件,隐藏它们,然后重新插入布局以再次显示它们。您还可以使用 QSS 规则来定位小部件的可见状态:
QComboBox { padding: 5px; } QComboBox:hidden { padding: 0; } -
问题更新了一些代码和图像。