QsciScintilla 如何添加注释

2025-09-25 21:18:58

1、//获取必要的参数

// 空白行的处理

bool commentEmptyLines = true; 

//获取选择注释的开始位置

int selectionStart = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETSELECTIONSTART);  

//获取选择注释的结束位置

int selectionEnd = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETSELECTIONEND);

//获取选择注释的当前位置

int caretPosition = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETCURRENTPOS);  

QsciScintilla 如何添加注释

2、//当前的光标位置 是否在选择内

bool move_caret = caretPosition < selectionEnd; 

3、//获取要注释的行号

 int selStartLine = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_LINEFROMPOSITION,selectionStart);

 int selEndLine = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_LINEFROMPOSITION,selectionEnd);

//计算 注释行数

int lines = selEndLine - selStartLine;

QsciScintilla 如何添加注释

4、//处理结束行

if((lines  > 0)&& (selectionEnd == ui->textEdit->SendScintilla(QsciScintillaBase::SCI_POSITIONFROMLINE,selEndLine)))       

selEndLine-- ;

5、//记录操作,方便实现 redo undo功能

ui->textEdit->SendScintilla(QsciScintillaBase::SCI_BEGINUNDOACTION);

QsciScintilla 如何添加注释

6、// 注释每一行

//遍历行

  for(int i = selStartLine; i <= selEndLine ; ++i)  

 {      

//获取注释的行信息

 int lineStart  = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_POSITIONFROMLINE,i);       

int lineIndent = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETLINEINDENTPOSITION,i);     

  int lineEnd    = ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETLINEENDPOSITION,i);

  if(lineIndent == lineEnd && !commentEmptyLines)         

        continue;      

 // 要注释的行前面的空格处理     

lineIndent = lineStart;      

 int lineBufferSize = lineEnd - lineIndent +1;       

char *buf =new char[lineBufferSize];    

//获取注释范围

  ui->textEdit->SendScintilla(QsciScintillaBase::SCI_GETTEXTRANGE, lineIndent, lineEnd,buf);

//添加注释 “//”

 ui->textEdit->SendScintilla(QsciScintillaBase::SCI_INSERTTEXT, lineIndent, "//");    }

QsciScintilla 如何添加注释

7、//完成记录    ui->textEdit->SendScintilla(QsciScintillaBase::SCI_ENDUNDOACTION);

QsciScintilla 如何添加注释

8、完整程序

QsciScintilla 如何添加注释

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢