2009-12-04 10 views
6

私はC++とQtの新機能です。QTextBlockはどのように使用しますか?

オブジェクトにQTextBlocksを埋め込みたいのですが、どうすればよいですか?

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

答えて

10

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 documentation)(注、私はブロックがどこにあるか、それを明示的にするために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を使用する必要があると思われる理由に関する追加情報はありますか?

+0

私は、他の言語(ギリシャ語)を読むのに役立つプログラムを書いています。それぞれの単語には、文法情報(「動詞、表示、アクティブ、3人称、マウスが各単語に移動します。 – jcuenod

+0

ああ、それはもっと意味があります。私の例の1つの問題は、各ブロックがそれ自身の行として表示されることです。私は 'QTextBlock'sの経験が十分ではないので、同じ行にそれらを取得する方法を知っています。がんばろう! – Bill

0

あなたは)(あなたはQStringのにあなたの文字列を代入して、QTextEditにそれを追加するか、またはあなたはQStringの使用セクションを解析することができ可能性がhere

マニュアルを確認here

1

insertBlockを使用せずにinsertTextを使用して、同じ行に置いてください。例えば

私はあなたのため

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

をしようとしたとき、言葉のすべてが同じライン上に現れました。

insertBlockは段落を挿入します。

+0

複数のQTextBlockでこれを行う方法はありますか?私が理解しているように、これは1つのQTextBlockに複数のフラグメントを作成します。 – ibizaman

関連する問題