QT—QTextEdit控件显示日志

功能:利用QTextEdit开发一个日志显示窗口。没有太多操作,需要实现的是日志自动向上滚动,总体的日志量可以控制在x行(比如300行)以内;其他的应用功能我后面继续添加

 

 1 #include <QTextBlock>
 2 
 3 #include <QTextEdit>
 4 
 5 #include <QDebug>
 6 
 7 #include <QTextCursor>
 8 
 9 
10 
11     QString text;
12 
13     text = "1111111111111111111111111111\n"\
14 
15             "222222222222222222222222222\n"\
16 
17             "33333333333333333333333333333\n"\
18 
19             "4444444444444444444444444444";
20 
21     QTextEdit edit;//定义一个QTextEdit。当然如果你想看显示内容,还是需要将这个QTextEdit绑定在一个widget上面show出来的;
22 
23     edit.setText(text); //把text设置给QTextEdit,如果这时候用widget,show出来的话,应该就能看到一个类似于记事本的界面上有四行内容;
24 
25     QTextBlock ba = edit.document()->firstBlock();//获取第一行的内容,,如果不用这个函数,我真没办法获取到第一行;
26 
27     QTextCursor cur = edit.textCursor();  //关键点:QTextEdit要删除,只能clear(),那就全部删除掉了。或者利用光标来进行选择,因为光标里的函数有一个removeSelectedText()
28 
29     cur.setPosition(0,QTextCursor::MoveAnchor);
30 
31     int length = ba.length();
32 
33     qDebug()<<"第一段的长度是:"<<length;
34 
35     cur.setPosition(length,QTextCursor::KeepAnchor);//设置selectedText的时候,我感觉应该有很多方式来选择的,我没有一一测试
36 
37     //cur.select(QTextCursor::WordUnderCursor);
38 
39     qDebug()<<"选择的文字是:"<<cur.selectedText();
40 
41     qDebug()<<"删除前:"<<edit.document()->lineCount();
42 
43     cur.removeSelectedText();
44 
45     edit.setTextCursor(cur);   //关键:必须将这个光标设置回去,否则你的删除操作没生效;
46 
47     qDebug()<<"删除后:"<<edit.document()->lineCount();//确认删除是否成功
48 
49     QTextBlock ba2 = edit.document()->firstBlock();
50 
51     qDebug()<<ba2.text();
52 
53     edit.append("\n5555555555555555555");
54 
55     QTextBlock ba3 = edit.document()->lastBlock();//此处是为了测试光标位置对添加后续内容的影响。结论是,删除动作不影响后续的追加text。
56 
57     qDebug()<<"ba3 = "<<ba3.text();

 

你可能感兴趣的:(text)