Обновить размер QTextDocument

У меня проблема с QTextDocument :: size ()

Размер документа обновляется каждый раз, когда пользователь вводит что-то в TextEdit вручную. (Так в СИГНАЛ TextChanged работает отлично). Тем не менее, я вставляю текст по коду.

textEdit->insertPlainText("blablablabla\n");

Когда я использую это:

int iHeight = textEdit->document()->size().height();

IHeight всегда равен 21, хотя textEdit имеет несколько строк текста. Когда я использую ту же строку кода в СИГНАЛЕ, о котором я говорил, iHeight волшебным образом превращается в правильное число.

Итак, в основном, мой вопрос, как обновить размер документа, чтобы он возвращал правильный номер?

0

Решение

Вы должны установить ширину QDocuments равной ширине QTextEdit, чтобы он знал, есть ли разрывы строк. После этого он возвращает правильный размер.

Пример:

QTextEdit textEdit;
textEdit.setMaximumWidth(50);
textEdit.setText("Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test");
textEdit.document()->adjustSize();
QSizeF size1 = textEdit.document()->size();
textEdit.document()->setTextWidth(textEdit.width());
QSizeF sizew = textEdit.document()->size();
textEdit.show();

Действительно, AdjustSize недостаточно.

1

Другие решения

Если вы позвоните _text->document()->adjustSize(); после вставки простого текста вы можете получить нужную высоту.

0

По вопросам рекламы [email protected]