c++ - 在显示 child 之前,不会考虑父样式表填充

标签 c++ qt qtstylesheets

我设置了一个小部件的样式表,然后在那之后添加了一个子小部件。但似乎 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/

相关文章:

c++ - 使用 boost::spirit::qi 重新合成中间值

c++ - 在qt中单击按钮重写文件内容

qt - 带有空文本的 QPushButton 的 QStyleSheet 属性

c++ - header 中的类模板

c++ - 返回类型未知的标准函数

c++ - 在 QTCreator 中链接到 user32.lib

c++ - 在设计时向 QStackedWidget 添加页面 Qt Designer

python - 在 Pyside2 中显示 SVG 作为主窗口的背景

c++ - Direct2D如何打开共享纹理