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