如何通过按下按钮格式化QTextEdit中的选定文本

时间:2010-09-03 14:27:48

标签: c++ qt formatting selection qtextedit

我想通过单击按钮来格式化QTextEdit中的选定文本。对于axample,如果它不是粗体,我想把它变成粗体,如果是粗体,我想把它变成粗体。请帮我举个例子。

修改

实际上我已经找到了一个代码 - 文本编辑器的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 函数如何理解要更改的内容以及要保留的内容。请解释我这两件事。 感谢。

1 个答案:

答案 0 :(得分:3)

textCursor()返回一个textCursor,其中包含您在textEdit中使用的光标的位置,请参阅Qt类中的QTextCursor。因此,通过选择光标开始和结束位置包含的文本,您可以获得当前高亮显示的文本。

至于mergeCharFormat,我猜它用于应用新状态(粗体,斜体,下划线)并保留现有状态。假设您的文字已加下划线并且您应用粗体,您可能希望保留两者。

希望这有帮助。