私はC++とQtに完全に慣れていません。
QTextEdit
オブジェクトにを入力したいのですがQTextBlocks
、どうすればよいですか?
たとえば、「魚がやってくる」という文がある場合、各単語をどのように独自の単語に入れてそのQTextBlock
ブロックをに追加しますか、または実際にQTextEdit
どのように機能するかを誤解しましたか?QTextBlock
QTextEdit
QString
:を介してコンテンツを追加できます
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();
私に行くのは大変な努力のようです。QTextBlock
sを使用する必要があると感じる理由について追加情報を教えてください。
間にinsertBlockを使用せずに、insertTextを使用して、それらを同じ行に保持します。
たとえば、私が試したとき
cursor.insertText("I will try ", textFormat);
cursor.insertText("this for you.", textFormat);
あなたにとって、単語はすべて同じ行に表示されました。
insertBlockは段落を挿入します。
こちらのドキュメントを確認してください
文字列をQStringに割り当ててから、それをQTextEditに追加するか、section()を使用してQStringを解析することができます。ここを参照してください。