2016-05-11 11 views
0

QTextDocumentを編集できるQTextEditがあります。QTextDocumentの既定の文字形式を設定する

文書のデフォルトの色とフォントを設定したいが、書類にテキストがないときは書式は破棄される。エディタが表示されたら

QTextDocument *d = new QTextDocument; 
QTextCursor cur(d); 
cur.select(QTextCursor::Document); 

QTextBlockFormat f1; 
f1.setBackground(Qt::black); 
f1.setForeground(Qt::yellow); 
cur.setBlockFormat(f1); 

QTextCharFormat f2; 
f2.setForeground(Qt::yellow); 
QFont font("Times New Roman", 12); 
f2.setFont(font); 
cur.setBlockCharFormat(f2); 

editor->setDocument(d); 

、私は一定の高さで、黒い背景のラインを参照してください。

は、ここに私のコードです。だから、これはうまくいったようです。

しかし、入力を開始すると、行のサイズが小さくなり、テキストが表示されません。入力したテキストを選択すると、その文字が黒(黒の背景)に書かれていることがわかり、フォントが変更されます。

// Same as above... 
cur.insertText("A"); 
editor->setDocument(d); 

は、エディタはダミーテキストを挿入せずに、形式を保持する方法はあります:私は、すべての作品、カーソルを使用し、フォーマットを編集で変更されていないいくつかの非空のテキストを挿入

このトピックの他の質問に記載されているように、私はスタイルシートまたはパレットをエディタで使用することはできません。すべては、QTextFormatを使って行わなければなりません。

答えて

0

私は最終的に自分で解決策を見つけました。

エディタのカーソルに必要なスタイル情報がなく、デフォルトのスタイルでテキストを挿入していたという問題がありました。エディタのカーソルを更新する必要があります。

// Build document as required... 
editor->setDocument(d); 

// This fixes the problem: 
QTextCursor editorCursor = editor->textCursor(); 
editorCursor.movePosition(QTextCursor::Start); 
editor->setTextCursor(editorCursor); 

解決策は、それがスタイルをフェッチする文書の先頭にカーソルを移動するだけです

関連する問題