前言:
现在兄弟们对“css多行文本”大体比较看重,各位老铁们都需要分析一些“css多行文本”的相关文章。那么小编同时在网上搜集了一些对于“css多行文本””的相关文章,希望各位老铁们能喜欢,同学们一起来了解一下吧!QPlainTextEdit是一个多行文本编辑器,用于显示和编辑多行简单文本。另外,还有一个QTextEdit组件,是一个所见即所得的可以编辑带格式文本的组件,以HTML格式标记符定义文本格式。
实例samp4_6演示QPlainTextEdit的使用,运行界面如下图:
从上一节的代码中,我们已经知道,使用QPlainTextEdit::appendPlainText( QString )函数就可以向PlainTextEdit组件添加一行字符串。
QPlainTextEdit提供cut()、copy()、paste()、undo()、redo()、clear()、selectAll()等标准编辑功能的槽函数,QPlainTextEdit还提供了一个标准的右键快捷菜单。
逐行读取文字内容
如果要将QPlainTextEdit组件中显示的文字读出来,有一个简单的函数toPlainText()可以将全部文字内容输出为一个QString,其定义如下:
QString QPlainTextEdit :: toPlainText()
但是如果要逐行读取QPlainTextEdit组件中的字符串,则稍微麻烦一点。
下面是上图中“文本框内容添加到ComboBox”按钮的响应代码,它将plainTextEdit中的每一行作为一个Item添加到comboBox中:
1 void Widget::on_plainTextEdit_blockCountChanged(int newBlockCount) 2 { 3 //plainTextEdit的内容逐行添加为comboBox的项 4 QTextDocument * doc = ui->plainTextEdit->document(); 5 int cnt = doc->blockCount();//回车符是一个block 6 QIcon icon("M:/images/icon/aim.ico"); 7 ui->comboBox->clear(); 8 for(int i=0;i<cnt;i++) 9 {10 QTextBlock textLine = doc->findBlockByNumber(i);//文本中的一行11 QString str = textLine.text();12 ui->comboBox->addItem(icon,str);13 }14 }
QPlainTextEdit的文字内容以QTextDocument类型存储,函数document()返回这个文档对象的指针。
QTextDocument是内存中的文本对象,以文本Block的方式存储,一个Block就是一个段落,每个段落以回车符结束。
QTextDocument提供一些函数实现对文本内容的读取:
int blockCount():获得Block个数(以回车符为间隔);QTextBlock findBlockByNumber( int blockNumber ):读取一个Block,序号从0开始,直到blockCount()-1结束。
一个document有多个Block,从document中读取出的一个Block类型为QTextBlock,通过QTextBlock::text()来获取纯文本Text。
使用QPlainTextEdit自带的快捷菜单
QPlainTextEdit有自带的右键快捷菜单,可以实现常用的编辑功能。在UI设计器里,选择为plainTextEdit的customContextMenuRequested()信号生成槽函数,编写如下的代码,就可以创建并显示QPlainTextEdit的标准快捷菜单:
1 void Widget::on_plainTextEdit_customContextMenuRequested(const QPoint &pos)2 {3 //创建并显示标准弹出式菜单4 QMenu* menu=ui->plainTextEdit->createStandardContextMenu();5 menu->exec(pos);6 }