Qplaintext控件是一个用于显示和编辑纯文本的控件,它优化了处理大文档和快速响应用户输入的能力。Qplaintext控件使用了与QTextEdit控件相同的技术和概念,但是专注于纯文本处理。Qplaintext控件支持文本段落,每个段落以换行符结束。Qplaintext控件中的文本内容以QTextDocument类型存诸,可以通过documentO方法获取文档对象的指针。
Qplaintext控件常用的方法有:
Qplaintext控件常用的信号有:
Qplaintext控件提供了cut()、copy()、paste()、undo()、redo()、clear()、selectAll()等标准编辑功能的槽函数。
1、首先在 QT里面
创建一个新的项目
如上图所示,拖出一个Qplaintext控件,这个控件的好处,在于将需要的文本输出到这个控件上以后,可以对此进行二次编辑,并且有光标进行指示。
2、废话不多说,代码如下:
#include //添加头文件
QTextCursor tc;//定义textcursor属性的变量
tc = ui->plainTextEdit->textCursor();//将它与plaintextedit进行绑定
// qDebug()<<"光标位置:"<plainTextEdit->moveCursor(tc.StartOfLine);//移动光标到这一行的开始
tc.insertText("1");//插入字符1
3、实现效果如下:
在这里列出以下函数:
演示
QTextCursor::NoMove 将光标保持在原位
QTextCursor::Start 移动到文档的开头
QTextCursor::StartOfLine 移动到当前行的开头
QTextCursor::StartOfBlock 移动到当前块的开头
QTextCursor::StartOfWord 移动到当前单词的开头
QTextCursor::PreviousBlock 移动到上一个块的开头
QTextCursor::PreviousCharacter 移动到上一个字符
QTextCursor::PreviousWord 移到上一个单词的开头
QTextCursor::Up 向上移动一行
QTextCursor::Left 向左移动一个字符
QTextCursor::WordLeft 向左移动一个单词
QTextCursor::End 移动到文档的末尾
QTextCursor::EndOfLine 移动到当前行的末尾
QTextCursor::EndOfWord 移动到当前单词的末尾
QTextCursor::EndOfBlock 移动到当前块的末尾
QTextCursor::NextBlock 移动到下一个块的开头
QTextCursor::NextCharacter 移动到下一个字符
QTextCursor::NextWord 移到下一个单词
QTextCursor::Down 向下移动一行
QTextCursor::Right 向右移动一个字符
QTextCursor::WordRight 向右移动一个单词
QTextCursor::NextCell 移动到当前表格中下一个表格单元格的开头。如果当前单元格是行中的最后一个单元格,则光标将移动到下一行的第一个单元格
QTextCursor::PreviousCell 移动到当前表中上一个表单元格的开头。如果当前单元格是行中的第一个单元格,则光标将移动到前一行的最后一个单元格
QTextCursor::NextRow 移动到当前表中下一行的第一个新单元格
QTextCursor::PreviousRow 移动到当前表中上一行的最后一个单元格
下面是一些使用Qplaintext控件的其他例子:
// 获取文档对象
QTextDocument *doc = ui->plainTextEdit->document();
// 获取文本块个数
int nCnt = doc->blockCount();
// 遍历每个文本块
for(int i=0;ifindBlockByNumber(i);
// 获取纯文本文字
QString strtext = textBlock.text();
// 处理文字
// ...
}
使用Qplaintext控件自带的快捷菜单:
// 在自定义菜单请求信号槽函数中
void MainWindow::on_plainTextEdit_customContextMenuRequested(const QPoint &pos)
{
// 创建并显示标准弹出式菜单
QMenu *menu = ui->plainTextEdit->createStandardContextMenu();
menu->exec(pos);
}
作为日志显示窗口:
// 定义一个添加日志的函数
void AddLog(const char *fmt,...)
{
// 获取当前时间
QDate date = QDate::currentDate();
QTime time = QTime::currentTime();
// 格式化日志信息
va_list list;
va_start(list,fmt);
QString str = QString().vsprintf(fmt,list);
va_end(list);
QString strtext = "";
strtext.sprintf("[%04d-%02d-%02d %02d:%02d:%02d.%03d] %s\r\n",date.year(),date.month(),date.day(),time.hour(),time.minute(),time.second(),time.msec(),str.toStdString().data());
// 设置光标到文本末尾
ui->plainTextEdit->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
// 插入日志信息
ui->plainTextEdit->insertPlainText(strtext);
// 移动滚动条到底部
QScrollBar * scrollbar = ui->plainTextEdit->verticalScrollBar();
if(scrollbar)
{
scrollbar->setSliderPosition(scrollbar->maximum());
}
}