【问题标题】:Parent style sheet padding is not taken into account until after child is shown直到显示子元素后才考虑父样式表填充
【发布时间】:2014-08-15 19:14:41
【问题描述】:

我设置了一个小部件的样式表,然后我在之后添加了一个子小部件。但似乎 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() 中得到虚假数据。是否有解决方法来确保这一点?

【问题讨论】:

标签: c++ qt qtstylesheets


【解决方案1】:

您可以致电QWidget::ensurePolished 以确保小部件具有正确的样式。这是 QWidget 在显示之前在内部使用的内容。

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 2011-08-31
    • 2021-08-30
    • 2018-05-29
    • 2017-03-06
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多