QML富文本编辑器

fol*_*bis 5 qt rich-text-editor qml qtquick2

是否可以仅使用QML组件创建简单的RTF编辑器?

我现在正在尝试这样做,TextArea但是它似乎无法处理格式化的文本。当然,我可以做这样的事情:

ToolButton {
 text: "Bold"
 onClicked: {
     var start = textArea.selectionStart;
     var end = textArea.selectionEnd;
     var text = textArea.getText(start,end);
     text = "<strong>" + text + "</strong>";
     textArea.remove(start,end);
     textArea.insert(start,text);
 }
} 
Run Code Online (Sandbox Code Playgroud)

但是我仍然无法检测光标下的文本格式。

如果有人可以共享一些代码片段或其他内容,我会感到很高兴。

任何建议将被认真考虑。

Blu*_*gma 1

您正在寻找的是TextEdit组件:

http://qt-project.org/doc/qt-5/qml-qtquick-textedit.html

使用它,仅用QML实现富文本编辑器应该不难

QtQuick TextEdit 和 Qt 5.2 或更高版本中的扩展 QtQuick.Controls TextArea 公开了 'textDocument' 属性,它是一个 QQuickTextDocument 指针,它又可以转换为 QTextDocument (是的,与 QWidgets 中相同)并且可以使用C++ 端从 TextEdit 获取信息,例如光标位置和当前块格式...

然而,对于简单的编辑(没有检索到信息),QML 端的纯 JS 就足够了(只需修改文本属性以使用例如 RegExp... 插入 HTML 标签)。