简体   繁体   English

QScintilla 突出显示匹配词

[英]QScintilla highlight match words

Im trying to highlight all the match words on the editor and can't seem to figure out how to properly highlight the text.我试图突出显示编辑器上的所有匹配词,但似乎无法弄清楚如何正确突出显示文本。 I can successfully loop through all the found matches but cant seem to find the right call to highlight it.我可以成功地遍历所有找到的匹配项,但似乎无法找到正确的调用来突出显示它。 Here is my code:这是我的代码:

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));**
    }
}

my qDebug()'s is showing that its going through each line and finding the matches and the position of the occurance of the word.我的 qDebug() 显示它遍历每一行并找到匹配项和单词出现的位置。 But code under the comment // Attempts to highlight is where I cant seem to figure out.但是注释// Attempts to highlight下的代码是我似乎无法弄清楚的地方。 Any advice?有什么建议吗?

You can try it.你可以试试看。

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());
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM