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

至于 mergeCharFormat,我猜它是用来应用新状态(粗体、斜体、下划线)并保留现有状态。假设您的文本已经带下划线并且您应用粗体,您希望同时保留两者。

希望这可以帮助。

于 2010-09-03T14:41:41.170 回答