首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将QFont styleName转换为样式表

将QFont styleName转换为样式表
EN

Stack Overflow用户
提问于 2021-08-20 11:08:41
回答 1查看 193关注 0票数 0

所有人。求你帮帮我。

想象一下,我有一个小部件表单并在其上显示值,我希望这些值的标签以其他字体显示,而不是其他文本标签。因此,我给他们一个css类名,例如"Value“,并希望通过样式表(QLabel.Value {.})设置一些字体。我试图通过Qt Designers样式表对话框来设置QLabel的字体,但是如果我选择字体Lato和样式MediumDesigner将其转换为string:

代码语言:javascript
复制
font: 57 12pt "Lato";

标签显示非常薄的字体,这绝对不是介质风格。

如果我尝试另一种字体Gotham,其样式为Book,则Designer根本看不到样式名称并输出:

代码语言:javascript
复制
  font: 12pt "Gotham".

所以问题是:

  1. 是否支持字体样式名称?
  2. (如果不支持),我可以用哪种qt方式将所需的字体分配给所有相同类型的标签(或小部件)?

我使用的是Windows 10,Qt 15.2 MinGW。

EN

回答 1

Stack Overflow用户

发布于 2021-08-20 11:18:38

避免在小部件上使用样式表设置自定义字体:

他们是error-prone.

  • Qt的
  1. 没有任何验证器。

您可以轻松地使用QFontQLabel::setFont (或用于显示信息的任何小部件)。例如:

代码语言:javascript
复制
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();
}

您可以更改标签字体:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68861245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档