Qt 样式表和 QString::arg()
Qt stylesheet and QString::arg()
为了使样式表在 DPI 设置方面保持动态,我想从代码中设置它的某些部分。
这个有效:
my_label->setStyleSheet( QString( "font-size: 30px;" ) );
然而,这不是:
my_label->setStyleSheet( QString( "font-size: %1px;" ).arg( 30 ) );
谁能赐教,这是为什么? 运行Qt 5.7.
将数字转换为字符串,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);
}
}
这个问题是两件事的结合:
- 我需要先将值转换为字符串
- 在运行时传递给 arg() 的实际值有一个小数位,“30”只是为了测试
虽然我确实尝试了不同的组合(整数值 (30),首先转换为 QString),但我没有尝试使用整数值并将其一起转换为 QString。
所以每个人都说对了。感谢您的耐心等待。
为了使样式表在 DPI 设置方面保持动态,我想从代码中设置它的某些部分。
这个有效:
my_label->setStyleSheet( QString( "font-size: 30px;" ) );
然而,这不是:
my_label->setStyleSheet( QString( "font-size: %1px;" ).arg( 30 ) );
谁能赐教,这是为什么? 运行Qt 5.7.
将数字转换为字符串,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);
}
}
这个问题是两件事的结合:
- 我需要先将值转换为字符串
- 在运行时传递给 arg() 的实际值有一个小数位,“30”只是为了测试
虽然我确实尝试了不同的组合(整数值 (30),首先转换为 QString),但我没有尝试使用整数值并将其一起转换为 QString。 所以每个人都说对了。感谢您的耐心等待。