Qt样式表和QString :: arg()

时间:2017-07-05 08:03:51

标签: qt stylesheet qstring

为了让样式表保持动态的DPI设置,我想从代码中设置它的某些部分。

这有效:

my_label->setStyleSheet( QString( "font-size: 30px;" ) );

然而,这并不是:

my_label->setStyleSheet( QString( "font-size: %1px;" ).arg( 30 ) );

任何人都可以启发我,为什么会这样?运行Qt 5.7。

2 个答案:

答案 0 :(得分:2)

问题是两件事的结合:

  1. 我需要先将值转换为字符串
  2. 在运行时传递给arg()的实际值有一个小数位,“30”仅用于测试
  3. 虽然我尝试了不同的组合(整数值(30),先转换为QString),但我没有尝试使用整数值并将其转换为QString。 所以每个人都是对的。感谢您的耐心等待。

答案 1 :(得分:-1)

将数字转换为字符串QString::number

my_label->setStyleSheet(QString("QLabel{font-size: %1 px;}").arg(QString::number(30));

或者使用QFont进行尝试,为此目的使用此通用函数:

void updateFontSize(QLabel* label, int fontSize) {
    QFont font = label->font();
    if (font.pointSize() != fontSize) {
        font.setPointSize(fontSize);
        label->setFont(font);
    }
}