QML Rich文本编辑器

时间:2014-07-20 23:57:29

标签: qt qml rich-text-editor qtquick2

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

我现在正在尝试使用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);
 }
} 

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

如果有人可以分享一些代码片段,我会很高兴。

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

Oк,搜索了所有的互联网:)我得出结论,现在不可能只用QML做一个丰富的编辑器。 使用C ++可以轻松完成,并且在$ QTDIR / Src / qtquickcontrols / examples / quick / controls / texteditor /

中有很好的例子。

答案 1 :(得分:0)

您正在寻找的是 TextEdit 组件:

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

使用它,仅使用QML

实现富文本编辑器应该不难

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

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