0

QTextDocument::size() に問題があります

ドキュメントのサイズは、ユーザーが手動で TextEdit に何かを入力するたびに更新されます。(したがって、SIGNAL textChangedでは問題なく動作します)。ただし、コードでテキストを挿入します。

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

これを使用する場合:

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

textEdit に複数行のテキストがある場合でも、iHeight は常に 21 です。話した SIGNAL で同じコード行を使用すると、iHeight は魔法のように正しい数値に変わります。

基本的に、私の質問は、ドキュメントのサイズを更新して適切な数を返す方法ですか?

4

2 に答える 2

1

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 では十分ではありません。

于 2015-09-09T08:59:32.253 に答える