首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QScintilla突出显示匹配词

QScintilla突出显示匹配词
EN

Stack Overflow用户
提问于 2014-05-24 18:31:07
回答 1查看 854关注 0票数 2

我试图在编辑器上高亮显示所有匹配的单词,但似乎找不出如何正确高亮文本。我可以成功地循环所有找到的匹配,但似乎找不到正确的调用来突出显示它。这是我的代码:

代码语言:javascript
复制
bool found = true;  

while(found)
{
    editor->getCursorPosition(&line, &index);

    qDebug() << "line: " << line << " index: " << index;

    found = editor->findFirst(pattern, use_regular_expression, is_case_sensitive, match_whole_word_only, use_wrap, search_forward);

    if(found)
    {
        int start = editor->positionFromLineIndex(line, index);
        int end = editor->positionFromLineIndex(line, index + pattern.length());

        qDebug() << "line: " << line << " start: " << start << " end: " << end;

        // Attempts to highlight
        editor->SendScintilla(QsciScintilla::SCI_INDICGETSTYLE, QsciScintilla::INDIC_BOX);
        editor->SendScintilla(QsciScintilla::SCI_INDICSETFORE, 0x007f00);
        //child[0]->SendScintilla(QsciScintilla::SCI_INDICATORFILLRANGE, start, end - start);
        editor->SendScintilla(QsciScintilla::SCI_INDICATORFILLRANGE, start, end - start);
        editor->setIndicatorForegroundColor(QColor(159, 144, 0));
      //  editor->setColor(QColor(159, 144, 0));**
    }
}

我的qDebug()是指它遍历每一行,找到匹配项和单词出现的位置。但是注释/试图突出显示的代码是我似乎搞不清楚的地方。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-25 06:37:10

你可以试试。

代码语言:javascript
复制
SendScintilla(QsciScintillaBase::SCI_INDICSETSTYLE,0, INDIC_BOX);

QString docText = text();
int end = docText.lastIndexOf(findText);
int cur = -1; 

if(end != -1) {

   while(cur != end) {
        cur = docText.indexOf(findText,cur+1);`
        SendScintilla(QsciScintillaBase::SCI_INDICATORFILLRANGE,cur,
            findText.length());
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23848382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档