Russian Qt Forum

Qt => Вопросы новичков => Тема начата: billy4685 от Ноябрь 24, 2014, 10:53



Название: Как в Qt тексту задать несколько стилей шрифта?
Отправлено: billy4685 от Ноябрь 24, 2014, 10:53
Снова вопрос о шрифтах) Как известно шрифт может быть обычным, жирным, курсивным, подчеркнутым. Как в qt к примеру задать шрифт жирный с курсивом?
Нашел задание стилей шрифта через setItalic(bool), setBold(bool), они работают совместно. Но а как к примеру это же сделать через полное задание шрифта? К примеру это вот работает: setFont(QFont("Times New Roman", 14, QFont::Bold)). А хотелось бы вот так: setFont(QFont("Times New Roman", 14, курсив | жирный)). Возможно ли это?


Название: Re: Как в Qt тексту задать несколько стилей шрифта?
Отправлено: Johnik от Ноябрь 24, 2014, 11:05
Код:
QFont::QFont(const QString & family, int pointSize = -1, int weight = -1, bool italic = false)


Название: Re: Как в Qt тексту задать несколько стилей шрифта?
Отправлено: billy4685 от Ноябрь 24, 2014, 16:53
увы но мне это не совсем подходит(,  хотелось бы сделать свою функцию void set_styleFont(unsigned style), тогда в нее вместо style, я смог бы к примеру отправлять Italic | Bold для жирного курсива. Ну что-то вроде этого. Ну вот как лучше организовать это, пока не придумал.


Название: Re: Как в Qt тексту задать несколько стилей шрифта?
Отправлено: billy4685 от Ноябрь 24, 2014, 16:56
хочется к примеру так как с setAlignment(Qt::Alignment), вместо Qt::Alignment можна вставлять  Qt::AlignCenter | Qt::Bottom. 


Название: Re: Как в Qt тексту задать несколько стилей шрифта?
Отправлено: billy4685 от Декабрь 01, 2014, 16:23
Всем спасибо, уже реализовал сам, просто написал функцию, которая принимает название шрифта (QString name), размер (int size) и стиль (unsigned style) (сюда посылаться будут некие из флагов BOLD, ITALIC, ANTIALIAS, ULINE или же их комбинацию через | и).
Далее в функции задаю полученные значения: название шрифта setFamilly(name) и размер setSizePixel(size). Со стилем поступаю следующим образом. Смотрю что приходит в функцию к примеру if (style & BOLD), и задаю соответственный стиль шрифта через: setBold(true), или setItalic(true), или setUnderline(true), или setStyleStrategy(QFont::PreferAntialias). Таким образом послав к примеру вместо стиль в функцию (BOLD | ITALIC), будет выполнено setBold(true) и setItalic(true).