Обновить размер QTextDocument
У меня проблема с QTextDocument::size()
Размер документа обновляется каждый раз, когда пользователь вводит что-то в TextEdit вручную. (Так что в SIGNAL textChanged это работает нормально). Тем не менее, я вставляю текст по коду.
textEdit->insertPlainText("blablablabla\n");
Когда я использую это:
int iHeight = textEdit->document()->size().height();
IHeight всегда равен 21, хотя textEdit имеет несколько строк текста. Когда я использую ту же строку кода в СИГНАЛЕ, о котором я говорил, iHeight волшебным образом превращается в правильное число.
Итак, в основном, мой вопрос, как обновить размер документа, чтобы он возвращал правильный номер?
2 ответа
Вы должны установить ширину 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 недостаточно.
Если вы позвоните _text->document()->adjustSize();
после вставки простого текста вы можете получить нужную высоту.