代码之家  ›  专栏  ›  技术社区  ›  Narek

如何通过按按钮设置qtextedit中所选文本的格式

  •  3
  • Narek  · 技术社区  · 14 年前

    我想通过单击按钮在qtextedit中设置所选文本的格式。对于Axample,如果它不是粗体,我希望它是粗体;如果它是粗体,我希望它不是粗体。请帮我举个例子。

    编辑:

    实际上,我已经找到了一个文本编辑器的code-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);
     }
    

    但我不明白是什么让 TraceCurror() 方法,以及如何合并属性?只是一些格式正在改变,其中一些保持不变。怎么 梅格格式 函数了解要更改的内容和要保留的内容。请给我解释一下这两件事。 谢谢。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Live    14 年前

    textcursor()返回一个textcursor,其中包含在textedit中使用的光标位置,请参见 QTextCursor 在QT课程中。因此,通过选择光标起始位置和结束位置所包含的文本,可以得到当前为Highlited的文本。

    至于mergecharformat,我想它是用来应用新状态(粗体、斜体、下划线)并保留现有状态的。假设您的文本已加下划线,并且您应用了粗体,那么您将希望保留这两个值。

    希望这有帮助。