Как изменить размер шрифта ранее написанного текста в текстовом браузере?

В моей программе я пытаюсь автоматически изменять размер текста при изменении размера окна. Я использовал resizeEvent для этого, и он распознает, когда размер окна изменяется. Однако всякий раз, когда я пытаюсь изменить размер шрифта с помощью setFontPointSize, это не работает. Единственный способ заставить его работать - использовать setText и использовать HTML для изменения размера шрифта, однако это нежелательно, поскольку я не могу получить доступ к размеру виджета и переменным внутри HTML.


person Abhi Garg    schedule 17.02.2018    source источник


Ответы (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
comment
Именно то, что я искал. Большое спасибо. Я делал Qt летом и совершенно забыл синтаксис. - person Abhi Garg; 17.02.2018
comment
@AbhiGarg Если мой ответ поможет вам, не забудьте отметить его как правильный. Если вы не знаете, как это сделать, ознакомьтесь с туром. - person eyllanesc; 17.02.2018
comment
Я отметил это как правильное. Не могли бы вы также сказать мне функцию отмены выбора после? - person Abhi Garg; 18.02.2018