我设置了一个小部件的样式表,然后在那之后添加了一个子小部件。但似乎 contentsMargins() 在显示子小部件之前不会返回真正的边距。
示例代码:
this->setStyleSheet("QLabel {padding: 0px 5px 10px 15px;}");
QLabel *label = new QLabel(this);
qDebug() << label->contentsMargins();
label->show();
qDebug() << label->contentsMargins();
这是输出:
QMargins(0, 0, 0, 0)
QMargins(15, 0, 5, 10)
请注意,如果我要交换顺序,即在设置父级样式表之前添加子小部件,问题就会消失。
但是由于各种原因,我无法在设置样式表之前添加子部件,而且我还需要确保我没有从 contentsMargins() 中获得虚假数据。是否有解决方法来确保这一点?
最佳答案
您可以调用QWidget::ensurePolished
以确保小部件具有正确的样式。这是 QWidget
在显示之前在内部使用的内容。
关于c++ - 在显示 child 之前,不会考虑父样式表填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405034/