В моей программе я пытаюсь автоматически изменять размер текста при изменении размера окна. Я использовал resizeEvent для этого, и он распознает, когда размер окна изменяется. Однако всякий раз, когда я пытаюсь изменить размер шрифта с помощью setFontPointSize, это не работает. Единственный способ заставить его работать - использовать setText и использовать HTML для изменения размера шрифта, однако это нежелательно, поскольку я не могу получить доступ к размеру виджета и переменным внутри HTML.
Как изменить размер шрифта ранее написанного текста в текстовом браузере?
Ответы (1)
когда вы меняете шрифт с помощью setFontPointSize
, вы делаете это для нового текста, если вы хотите, чтобы он применялся ко всему тексту, вы должны выбрать его и просто изменить размер шрифта:
class TextBrowser: public QTextBrowser{
protected:
void resizeEvent(QResizeEvent *event){
QTextBrowser::resizeEvent(event);
//some criteria to obtain the new font size
qreal size = 0.1*event->size().width();
QTextCursor cursor = textCursor();
selectAll();
setFontPointSize(size);
setTextCursor(cursor);
}
};
Полный пример можно найти по следующей ссылке.
person
eyllanesc
schedule
17.02.2018
Именно то, что я искал. Большое спасибо. Я делал Qt летом и совершенно забыл синтаксис.
- person Abhi Garg; 17.02.2018
@AbhiGarg Если мой ответ поможет вам, не забудьте отметить его как правильный. Если вы не знаете, как это сделать, ознакомьтесь с туром.
- person eyllanesc; 17.02.2018
Я отметил это как правильное. Не могли бы вы также сказать мне функцию отмены выбора после?
- person Abhi Garg; 18.02.2018