根据平台(KDE Plasma或Ubuntu 16.04),小部件中的填充不同。这张图片证明了这一点:
打印值是qlabel->geometry()
的输出。使用Gammaray检查显示KDE的sizeHint()
为77x18,但实际大小为77x33。显然有一些特定于平台的样式,但是如何以正确的方式禁用它? (调用setWidth()
或类似的东西是不可能的,因为它无法正确处理所有内容。)
此窗口小部件不存在layoutSpacing()
方法,并且根据建议here调用setMargins(0)
无效。我想可以减去其中一个QStyle PixelMetrics值,但究竟是哪一个? (有没有关于此的文件?)
这是我能想到的最低工作范例。原始问题有一个QTreeView,在单元格之间存在太多空间,但我想这个解决方案是可传递的。
#include <QApplication>
#include <QLabel>
#include <QDebug>
#include <QTimer>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello, world!");
QTimer::singleShot(100, [=]() {
qDebug() << label->geometry();
});
label->show();
return app.exec();
}