8

私はC++とQtに完全に慣れていません。

QTextEditオブジェクトにを入力したいのですがQTextBlocks、どうすればよいですか?

たとえば、「魚がやってくる」という文がある場合、各単語をどのように独自の単語に入れてそのQTextBlockブロックをに追加しますか、または実際にQTextEditどのように機能するかを誤解しましたか?QTextBlock

4

3 に答える 3

13

QTextEditQString:を介してコンテンツを追加できます

QTextEdit myEdit("the fish are coming");

QTextDocumentまた、テキストのブロックを保持するを使用することもできます。それQTextDocument自体も受け入れることができますQString

QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument("the fish are coming", &myEdit);
myEdit.setDocument(myDocument);

ただし、「新しいテキストブロックを作成する必要がある場合、またはドキュメントの内容を調べながらドキュメントの内容を変更する必要がある場合は、QTextCursor代わりにによって提供されるカーソルベースのインターフェイスを使用してください。」(Qtドキュメント) (注、QTextBlockFormatブロックがどこにあるかを明示するために行を追加しました。)

QTextEdit myEdit;
QTextDocument* myDocument = new QTextDocument(&myEdit);
myEdit.setDocument(myDocument);
QTextCursor* myCursor = new QTextCursor(myDocument);

QTextBlockFormat format;
format.setBackground(Qt::red);
myCursor->setBlockFormat(format);

myCursor->insertText("the ");

format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText("fish ");

format.setBackground(Qt::yellow);
myCursor->insertBlock(format);
myCursor->insertText("are ");

format.setBackground(Qt::red);
myCursor->insertBlock(format);
myCursor->insertText("coming!");

format.setBackground(Qt::green);
myCursor->insertBlock(format);
myCursor->insertText(QString(%1 blocks").arg(myDocument->blockCount()));
myEdit.show();

私に行くのは大変な努力のようです。QTextBlocksを使用する必要があると感じる理由について追加情報を教えてください。

于 2009-12-04T22:24:33.730 に答える
1

間にinsertBlockを使用せずに、insertTextを使用して、それらを同じ行に保持します。

たとえば、私が試したとき

cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);

あなたにとって、単語はすべて同じ行に表示されました。

insertBlockは段落を挿入します。

于 2013-02-26T05:17:21.487 に答える
0

こちらのドキュメントを確認してください

文字列をQStringに割り当ててから、それをQTextEditに追加するか、section()を使用してQStringを解析することができます。ここを参照してください。

于 2009-12-04T20:56:14.943 に答える