最近在做一个日志分析系统,功能不多,但是由于基础弱,很多知识点都不会,以下是总结:
- 获取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();