我知道如何调整小部件的padding属性:
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
答案 0 :(得分:0)
设置样式表不会以您可以查询的任何方式更改实际边距。活动的QStyle
可以控制小部件的最终外观,在这种情况下为QStylesheetStyle
,它可以在绘制项目时设置边距/等。除了QStylesheetStyle
内部,其他地方都无法使用已解析的CSS。
添加(基于后续评论)
没有官方的访问QStylesheetStyle
的方法,它在Qt中是完全私有的。但是,即使您确实想使用widgets-private
部分,该信息仍然埋在QStylesheetStyle
私有数据的深处...我不确定即使您加载了{{ 1}},因为很多数据(以及提取部分数据的方法)仅在CPP文件本身中。
如果您真的想深入研究... https://code.woboq.org/qt5/qtbase/src/widgets/styles/qstylesheetstyle.cpp.html(您可以立即看到CPP中有一些定义,这些定义对于处理CSS和进行任何查找都是必需的,例如qstylesheetstyle_p.h
顶部的枚举)
已添加以回应已编辑的问题:
这是默认的PseudoElement
间距,增加了额外的填充。添加:
QVBoxLayout
(或您希望在项目之间使用的任何填充)