【问题标题】:Qt 4.8.5 QLabel setStylesheet ignores inherited fontQt 4.8.5 QLabel setStylesheet 忽略继承的字体
【发布时间】:2016-03-11 14:43:27
【问题描述】:

我想通过 setStylesheet 设置一些样式属性,例如边框

label.setStylesheet("border: 1px solid white;");

之后我的标签有一个白色边框,但在父窗口小部件 (QDesigner) 中设置的所有字体属性都将被忽略!

qDebug() << label->font().family();
qDebug() << label->font().rawName();

两者都打印正确的字体系列,但在调用 setStylesheet 函数后不应用。

颜色也一样。如果我通过 setStylesheet() 设置一些其他属性,则不会使用通过 Designer 中的 QPlatte 设置的颜色。

我不知道,但似乎我们不应该混合使用这两种技术,否则我在这里做错了。

【问题讨论】:

    标签: qt stylesheet


    【解决方案1】:

    不幸的是,在小部件的样式表中设置一个属性通常会导致所有样式属性都需要设置,并且会破坏任何这些属性的继承。我无法在我自己的环境中重现字体继承问题(您使用的是什么版本的 Qt?),但下面的代码应该可以帮助您解决这个问题。

    //  Get the color of the label's parent (this).
    QColor color = this->palette().windowText().color();
    QString colorString = "rgb(" +
                          QString::number( color.red() ) + "," +
                          QString::number( color.green() ) + "," +
                          QString::number( color.blue() ) + ")";
    
    //  Get the Font of the label's parent (this).
    QFont font = this->font();
    
    //  Set the Font and Color.
    label->setFont( font );
    label->setStyleSheet( "color: " + colorString + "; border: 1px solid white;" );
    

    就个人而言,我尝试将所有样式保留在特定表单对象样式的表单编辑器中,或者保留在顶层加载的样式表中,就像网页的 CSS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-21
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2022-01-25
      • 2012-06-17
      相关资源
      最近更新 更多