4

ボタンをクリックして、選択したテキストをQTextEditでフォーマットしたい。たとえば、太字でない場合は太字にし、太字の場合は太字にしないようにします。例を教えてください。

編集:

実際、私はすでにコードを見つけました-私が必要なことをするテキストエディタのqtデモ:

void
MyTextEdit::boldText(bool isBold) //this is the SLOT for the button trigger(bool)
{
    QTextCharFormat fmt;
    fmt.setFontWeight(isBold ? QFont::Bold : QFont::Normal);
    mergeFormatOnWordOrSelection(fmt);
}

void
MyTextEdit::mergeFormatOnWordOrSelection(const QTextCharFormat &format)
 {
     QTextCursor cursor = m_textEdit->textCursor();
     if (!cursor.hasSelection())
         cursor.select(QTextCursor::WordUnderCursor);
     cursor.mergeCharFormat(format);
     m_textEdit->mergeCurrentCharFormat(format);
 }

しかし、何がtextCursor()メソッドを返すのか、そしてプロパティのマージがどのように行われているのか理解できませんか?一部のフォーマットは変更されており、一部は一定のままです。mergeCharFormat関数が、何を変更し、何をそのままにしておくかをどのように理解するかこの2つだけ説明してください。ありがとう。

4

1 に答える 1

3

textCursor()は、textEditで使用するカーソルの位置を含むtextCursorを返します。QtクラスのQTextCursorを参照してください。したがって、カーソルの開始位置と終了位置に含まれるテキストを選択すると、現在ハイライト表示されているテキストが得られます。

mergeCharFormatについては、新しい状態(太字、斜体、下線付き)を適用し、既存の状態を維持するために使用されていると思います。テキストにすでに下線が引かれていて、太字を適用している場合は、両方を保持する必要があります。

お役に立てれば。

于 2010-09-03T14:41:41.170 に答える