我想通过单击一个按钮来格式化 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 函数如何理解要更改的内容以及保留的内容。请向我解释这两件事。 谢谢。
最佳答案
textCursor() 返回一个包含您在 textEdit 中使用的光标位置的 textCursor,参见 QTextCursor在 Qt 类中。因此,通过选择光标开始和结束位置包含的文本,您将获得当前高亮显示的文本。
至于 mergeCharFormat,我猜它是用来应用新状态(粗体、斜体、下划线)并保留现有状态的。假设您的文本已经带有下划线并且您应用了粗体,您可能希望同时保留这两者。
希望这对您有所帮助。
关于c++ - 如何通过按下按钮来格式化 QTextEdit 中的选定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3636723/