LINUX.ORG.RU

QTextEdit, Изменение высоты в зависимости от введенного текста

 ,


0

1

Всем привет. Есть QTextEdit, размер высота которого позволяет вместить 3 строки введенного текста. Мне необходимо сделать так: до 10 строк необходимо увеличивать высоту едита, при числе строк > 10 высоту необходимо зафиксировать и показать скролбар... Вот код, который был изначально

text = textEdit -> toPlainText();
    int         endlCount = text.split("\n").size();
    if(endlCount < 3) {
        textEdit -> setFixedHeight(text_edit_height * 3 + text_edit_dist);
        textEdit -> setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    }
    if(endlCount >= 3 && endlCount <= 10) {
        int new_height = text_edit_height * endlCount + text_edit_dist;
        if(textEdit -> height() != new_height) {
            QScrollBar *bar = textBrowser -> verticalScrollBar();
            textEdit -> setFixedHeight(text_edit_height * endlCount + text_edit_dist);
            bar -> setSliderPosition(bar -> maximum());
        }
        textEdit -> setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    }
    if(endlCount > 10) {
        textEdit -> setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    }
Беда в том, что, при вводе длинного текста без явного ввода \n, этот метод не работает. После, пробовал нагугленное решение, document() -> lineCount() и document() -> blockCount() в качестве кол-ва строк. Они тоже не отслеживают, когда новая появляется строка. т.е. если зажать какую-нибудь клавишу, то, по достижении границы эдита появится вторая строка, но этот факт я отследить не могу...Более того, окно можно растягивать и сужать, в этом случае тоже нужно выставлять правильный размер эдита... Подскажите, люди добрые!

А fixedSize QTextEdit'у по тому, сколько пикселей занимает 10 строк, выставлять не пробовал? Узнать сколько в пикселях будет 10 строк можно вроде как через QFontMetrics.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

А fixedSize QTextEdit'у по тому, сколько пикселей занимает 10 строк, выставлять не пробовал? Узнать сколько в пикселях будет 10 строк можно вроде как через QFontMetrics.

Насколько я понял, проблема в том, чтобы понять сколько сейчас фактически строк — ведь они могут разбиваться автоматически.

CrossFire ★★★★★ ()
Ответ на: комментарий от CrossFire

Вот за documentSizeChanged спасибо, завтра попробую и напишу что получилось...

energyclab ()
Ответ на: комментарий от CrossFire

Большое спасибо, сигнал действительно срабатывает тогда, когда нужно...

energyclab ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.