Qt: изменить вес шрифта

Я хотел бы, чтобы мой текст был QLabel где-то между полужирным и обычным стилем, и я считаю, что настройка веса шрифта должна быть ответом на мою проблему.

В документации Qt я обнаружил, что есть два варианта изменения веса шрифта:

  1. Со стороны cpp через: метод QFont::setWeight(), который принимает числа 0-99

    http://doc.qt.io/qt-4.8/qfont.html#Weight-enum

  2. Из стиля Qss через: атрибут font-weight, который принимает числа 100,200,...,900

    http://doc.qt.io/qt-4.8/stylesheet-reference.html#font-weight

Я пробовал оба метода, и ничего не работает. Я всегда получаю только обычный или обычный полужирный стиль и ничего между ними.

Пример:

QLabel* test1 = new QLabel("Font-weight testing");
test1->show();

QLabel* test2 = new QLabel("Font-weight testing");
QFont font = test2->font();
font.setWeight(40);
test2->setFont(font);
test2->show();

QLabel* test3 = new QLabel("Font-weight testing");
test3->setStyleSheet("font-weight: 400");
test3->show();

В приведенном выше примере я создал 3 ярлыка. Один без каких-либо дополнительных настроек, один, в котором я изменил толщину шрифта с помощью метода setWeight, и один, в котором толщина шрифта должна быть изменена с помощью стиля Qss. Но все три в конечном итоге будут точно такими же.

Я даже пытался увеличить шрифт, включить сглаживание или использовать другой шрифт, но ничего не помогло.


person Martin Cmar    schedule 23.11.2017    source источник
comment
У вас установлены шрифты среднего размера или вы ожидаете, что система создаст их по волшебству?   -  person stark    schedule 23.11.2017
comment
я действительно не знаю   -  person Martin Cmar    schedule 23.11.2017


Ответы (2)


Метод QFont::setWeight ожидает, что его входное значение будет одним из значений перечисления QFont::Weight.

http://doc.qt.io/qt-5/qfont.html#setWeight

Правильная версия:

QLabel* test2 = new QLabel("Font-weight testing");
QFont font = test2->font();
font.setWeight(QFont::Bold);
test2->setFont(font);

Также у вас есть две ошибки в версии QSS. Во-первых, вы не указали селектор для своего правила. Во-вторых, значение 400 соответствует «обычному» шрифту.

https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight

Правильная версия:

QLabel* test3 = new QLabel("Font-weight testing");
test3->setStyleSheet("QLabel { font-weight: bold; }");
person hank    schedule 23.11.2017
comment
У меня нет проблем с жирным шрифтом. Я не могу получить результат шрифта среднего размера. И font-weight: bold; работает даже без селектора QLabel - person Martin Cmar; 23.11.2017