日志分析系统 ^^^^个人总结

最近在做一个日志分析系统,功能不多,但是由于基础弱,很多知识点都不会,以下是总结:

  • 获取QTextBrowser的内容
ui->textBrowser->document()->toPlainText();

注:用document()获取QTextDocument对象后,还可以获取更多功能 

  •  获取光标所在的行数、列数:
QTextCursor  cursor = ui->textBrowser->textCursor();

    int lineNumber = cursor.blockNumber();
    
    int columnNumber = cursor.columnNumber();
  • 获取光标所在行的内容:
//trimmed()是去除空格
QString readID = textCursor.selectedText().trimmed();
  • 删除重复项:
    int QStringList::removeDuplicates()
  • 同时浏览多个文件,可以用QTabWidget
  • 点击QTabWidget不同参数的选项卡,显示该参数下的文件内容:
//在头文件中,声名一个QTextEdit,

//在读取文件时,设置循环,每打开一个文件,new一下textEdit 

//最后:
ui->tabWidget->insertTab( i, textEdit, fileInfo.fileName() );
  • 获取文件名(不带路径的那种)
    QString file = fileName.at( i );
    
    fileInfo = QFileInfo( file );
    
    fileName = fileInfo.fileName();
    
  •  在使用qrand()产生随机数之前,一般先在构造函数内用qsrand()为其设置初值,如若不设置初值,那么每次运行程序qrand()都会产生相同的一组随机数
  • QTabWidget  的其中一个信号:void tabBarClicked(int). //当点击第参数个选项卡的时候,发出信号. 
  • 以下是寻找与选中光标有相同ID号的行,给找到的那行添加背景颜色, 这是最让我头疼的一段,光这一段,就忙了好久,还被领导训了,哭唧唧
 QTextDocument *document = ui->textEdit_addColor->document();

    QTextCursor textCursor = ui->textEdit_addColor->textCursor();

    QString readID = textCursor.selectedText().trimmed();

    bool found = false;

    QTextCursor highlightCursor( document );

    QTextCursor cursor( document );

    QTextCursor stringCursor( document );

    //开始
    cursor.beginEditBlock();

    QTextCharFormat fmt( cursor.charFormat() );

    fmt.setBackground( textCursor.charFormat().background() );

    fmt.setFontWeight( QFont::Bold );

    while ( !highlightCursor.isNull() && !highlightCursor.atEnd() )
    {
        //查找指定的文本,匹配整个单词
        highlightCursor = document->find( readID, highlightCursor, QTextDocument::FindWholeWords );

        int blockNum = highlightCursor.blockNumber();

        QTextDocument *textDocument = ui->textEdit_addColor->document();

        QTextBlock textBlock = textDocument->findBlockByLineNumber( blockNum );

        QString readString = textBlock.text();

        stringCursor = document->find( readString, stringCursor, QTextDocument::FindWholeWords );

        if ( !stringCursor.isNull() )
        {
            if( !found )
            {
                found = false;

                stringCursor.mergeCharFormat( fmt );
            }

        }
    }

    cursor.endEditBlock();

猜你喜欢

转载自blog.csdn.net/Huahua12342234/article/details/81287575
今日推荐