Qt QML 如何格式化(突出显示)文本
Posted
技术标签:
【中文标题】Qt QML 如何格式化(突出显示)文本【英文标题】:Qt QML How to format (highlight) text 【发布时间】:2011-08-28 16:47:44 【问题描述】:我想编写一个简单的纯文本编辑器,包括 QML 中的简单降价指令。因此,我添加了一个 TextEdit-Element 和一个用于语法高亮的 javascript 函数。
举个例子:
我想以粗体打印两个星号“*”之间的字符串。
所以我必须在最新的符号(*)之前插入<b>
标记或在最新符号(*)之后插入</b>
标记,但元素的属性是html 文档。
如何找到正确的位置(我可以访问光标位置,但这与 html-doc 位置不同)?并插入这些标签?是否有一些辅助方法、秘籍或指南?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于Qt QML 如何格式化(突出显示)文本的主要内容,如果未能解决你的问题,请参考以下文章