是否可以仅使用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);
}
}
但是我仍然无法检测光标下的文本格式。
如果有人可以分享一些代码片段,我会很高兴。
任何建议都将受到赞赏。
答案 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标签......)。