我想通过单击按钮来格式化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 函数如何理解要更改的内容以及要保留的内容。请解释我这两件事。 感谢。
答案 0 :(得分:3)
textCursor()返回一个textCursor,其中包含您在textEdit中使用的光标的位置,请参阅Qt类中的QTextCursor。因此,通过选择光标开始和结束位置包含的文本,您可以获得当前高亮显示的文本。
至于mergeCharFormat,我猜它用于应用新状态(粗体,斜体,下划线)并保留现有状态。假设您的文字已加下划线并且您应用粗体,您可能希望保留两者。
希望这有帮助。