【问题标题】: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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多