QT中Qplaintext控件的使用

Qplaintext控件是一个用于显示和编辑纯文本的控件,它优化了处理大文档和快速响应用户输入的能力。Qplaintext控件使用了与QTextEdit控件相同的技术和概念,但是专注于纯文本处理。Qplaintext控件支持文本段落,每个段落以换行符结束。Qplaintext控件中的文本内容以QTextDocument类型存诸,可以通过documentO方法获取文档对象的指针。

Qplaintext控件常用的方法有:

  • setPlainText(const QString &text):设置多行文本框的内容。
  • insertPlainText(const QString &text):插入普通文本。
  • appendPlainText(const QString &text):添加普通文本。
  • toPlainText():获取所有文字。
  • appendHtml(const QString &html):添加HTML文本内容。
  • setReadOnly(bool op):设置成只读模式。
  • isReadOnly():是否是只读模式。
  • setLineWrapMode():设置换行模式,取值有:
    • QPlainTextEdit::NoWrap:不自动换行。
    • QPlainTextEdit::WidgetWidth:根据文本框的宽度自动换行。
  • lineWrapMode():获取换行模式。

Qplaintext控件常用的信号有:

  • textChanged():文本内容发生改变时触发。
  • selectionChanged():选中内容发生改变时触发。
  • cursorPositionChanged():光标位置发生改变时触发。
  • copyAvailable():复制可用时触发。
  • redoAvailable():重做可用时触发。
  • undoAvailable():撤销可用时触发。

Qplaintext控件提供了cut()、copy()、paste()、undo()、redo()、clear()、selectAll()等标准编辑功能的槽函数。

1、首先在 QT里面

创建一个新的项目 

QT中Qplaintext控件的使用_第1张图片

 如上图所示,拖出一个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());
    }
}

你可能感兴趣的:(ui,c++,qt)