c++ - 将 QFont styleName 转换为样式表
问题描述
每个人。请帮我。
想象一下,我有一个小部件表单并在其上显示值,并且我希望值的标签以其他字体而不是其他文本标签显示。所以我给他们一个css类名,例如“Value”,并想通过样式表设置一些字体(QLabel.Value {...})。我尝试通过Qt Designers样式表对话框设置QLabel的字体,但如果我选择例如字体为 Medium 的字体Lato ,Designer会将其转换为字符串:
font: 57 12pt "Lato";
并且标签显示非常细的字体,绝对不是Medium样式。
如果我尝试使用另一种字体Gotham样式Book,设计师根本看不到样式名称并输出:
font: 12pt "Gotham".
所以问题是:
- 样式表是否支持字体样式名称?
- 如果不是,我可以通过哪种 qt 方式将所需的字体分配给相同类型的所有标签(或小部件)?
PS 我使用的是 Windows 10,Qt 15.2 MinGW。
解决方案
避免使用样式表在小部件上设置自定义字体:
- 它们很容易出错。
- Qt 没有任何验证器。
您可以轻松地使用QFont
和QLabel::setFont
(或用于显示信息的任何小部件)。例如:
auto font_1()
{
QFont f;
f.setFamily("Monospace");
f.setWeight(10);
f.setBold(true);
return f;
}
void change_fonts(std::vector<QLabel*> const& lbns)
{
for (auto const& lbn : lbns) {
lbn->setFont(font_1());
}
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
auto const win = new QDialog;
auto const lbn1 = new QLabel("Ghasem Ramezani");
auto const lbn2 = new QLabel("Ghasem Ramezani");
auto const lay = new QVBoxLayout;
change_fonts({lbn1, lbn2});
lay->addWidget(lbn1);
lay->addWidget(lbn2);
win->setLayout(lay);
win->show();
return app.exec();
}
推荐阅读
- firebird - 如何在 FIrebird fdb python 库中设置 set_stream_blob_threshold?
- python - 将 Python 中的数据框插入到雪花中
- amazon-web-services - 如何按日期将文件子集从一个 S3 存储桶文件夹复制到另一个
- java - 如何将 Android 日历设置为航海或军事时区
- c# - 指定类型的某些属性
- chocolatey - 在 Windows 7 64 位上安装巧克力时出错
- python-3.x - 在没有指定协议的情况下打开网页时出现 Selenium InvalidArgumentException (http/https)
- python - 使用 Django 的 AJAX 调用正在将响应打印到空白页
- kubernetes - 在 K8 集群外设置 prometheus
- python - 如何在不计算空格的情况下找到字符串的长度?