【问题标题】:Qt QML How to format (highlight) textQt QML 如何格式化(突出显示)文本
【发布时间】:2011-08-28 16:47:44
【问题描述】:
我想编写一个简单的纯文本编辑器,包括 QML 中的简单降价指令。因此,我添加了一个 TextEdit-Element 和一个用于语法高亮的 JavaScript 函数。
举个例子:
我想以粗体打印两个星号“*”之间的字符串。
所以我必须在最新的符号(*)之前插入<b> 标记或在最新符号(*)之后插入</b> 标记,但元素的属性是HTML 文档。
如何找到正确的位置(我可以访问光标位置,但这与 html-doc 位置不同)?并插入这些标签?是否有一些辅助方法、秘籍或指南?
【问题讨论】:
标签:
javascript
c++
qt
syntax-highlighting
qml
【解决方案1】:
您可以使用window.getSelection() 获取选定的文本。
例如:
HTML:
<div id="test" onmouseover="getSelectedText()">a*b*</div>
JavaScript:
function getSelectedText() {
var m = 'getSelection';
if(m in window) {
var Selection = new String(window[m]());
var text = multiReplace([/\*([^*]+)\*/],
[RegExp.$1.bold()],
Selection
);
alert(text);
}
}
function multiReplace(arr1,arr2,str) {
if(arr1 instanceof Array) {
for(var i = 0,len = arr1.length; i < len; i++) {
str = str.replace(arr1[i],arr2[i]);
}
} else if(arr1 instanceof Object) {
str = arr2;
for(var key in arr1) {
str = str.replace(key, arr1[key]);
}
} else {
return null;
}
return str;
}