展开全部
用QT查找字符串并标记要查找的内容32313133353236313431303231363533e78988e69d8331333363373762,使用以下代码即可实现:QStringsearchString=ui->lineEdit_2->text();
QTextDocument*document=ui->description->document();
ui->description->setHtml(ui->description->document()->toPlainText());
intnumber=0;
boolfound=false;
QTextCursorhighlightCursor(document);
QTextCharFormatplainFormat(highlightCursor.charFormat());
QTextCharFormatcolorFormat=plainFormat;
colorFormat.setForeground(Qt::red);
if(ui->description->toPlainText()==""){
QMessageBox::information(this,tr("descriptionfirst"),
"Sorry,pleasedisplaythedescriptionfirst!");
}
else{
ui->result->setPlainText("");
QStringresultstring="搜索结果:";
QStringlaststring;
/*while循环体是本代码的关键-——开始——*/
while(!highlightCursor.isNull()&&!highlightCursor.atEnd()){
if(ui->daxiaocheckBox->isChecked()==true){
highlightCursor=document->find(searchString,highlightCursor,QTextDocument::FindCaseSensitively);
}//这个是实现大小写区分效果的代码,你可能不需要
else
highlightCursor=document->find(searchString,highlightCursor);
if(!highlightCursor.isNull()){
number++;
found=true;
highlightCursor.movePosition(QTextCursor::Right,QTextCursor::KeepAnchor,0);
highlightCursor.mergeCharFormat(colorFormat);
laststring=QString::number(highlightCursor.position(),10);
if(ui->onlyTwo->isChecked()==true){
if(number<=1)
resultstring+="noccurrence"+QString::number(number,10)+":——position:"+QString::number(highlightCursor.position(),10);
}//这个是实现大小写区分效果的代码,你可能不需要
else
resultstring+="noccurrence"+QString::number(number,10)+":——position:"+QString::number(highlightCursor.position(),10);
}
}
/*关键代码结束*/
if(number>1&&ui->onlyTwo->isChecked()==true)
resultstring+="noccurrence"+QString::number(number,10)+":——position:"+laststring;
ui->result->setPlainText(resultstring);
if(found==false){
QMessageBox::information(this,tr("WordNotFound"),
"Sorry,thewordcannotbefound.");
}
else{
QMessageBox::information(this,tr("WordwasFound"),
"theword'"+searchString+"'wasfoundfor"+QString::number(number,10)+((number>1)?"times":"time"));
}
}