首页 > 其他分享 >Qt QPlainTextEdit多行文本编辑器

Qt QPlainTextEdit多行文本编辑器

时间:2022-08-23 13:35:21浏览次数:67  
标签:文本编辑 菜单 Qt int plainTextEdit QPlainTextEdit 文本 Block

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 }

 

标签:文本编辑,菜单,Qt,int,plainTextEdit,QPlainTextEdit,文本,Block
From: https://www.cnblogs.com/ybqjymy/p/16615806.html

相关文章

  • Qt将程序打包成.exe文件,并添加图标
    1、在工程中添加一个QtResourceFile,文件名任意  2、将.ico后缀的图片放到跟工程文件(.pro)文件同目录下,并在QtResourceFile文件中添加该.ico文件  3、添加相......
  • QT汽车客运公司售票系统
    QT汽车客运公司售票系统以下题目皆为常见的信息管理系统,要求采用面向对象的系统分析与设计方法,用较底层的C++程序设计实现相应的功能,以达到巩固C++基础、增强实际应用能力......
  • qt实现父界面中多子界面间的切换---stackWidget
    qt实现父界面中多子界面间的切换---stackWidget1.创建新项目2.项目命名3.起类名起类名之前的步骤可直接next即可。4.打开ui5.拖入控件6.添加新页该步可跳过,当......
  • qt vs C#
    其实不应该这两个进行比较?qt是framework,C#是语言。应该是语言和语言对比,框架和框架对比:C++vsC#;qtvs.net1如果只是windows,用C#/.net;如果跨平台:用C++/qt //2如......
  • Qt6.3.1三种方式远程连接阿里云服务器ECS MySQL数据库(ODBC方式、DSN方式、直连方式)
    一、ODBC方式远程连接MySQL数据库voidcreateMySQLConnByODBC(){qDebug()<<"Qt6支持的数据库驱动有:"<<QSqlDatabase::drivers();QSqlDatabasedb=QSqlDat......
  • QT——解决代码修改table表格数据后,界面内容内有刷新的问题
    ui.tableWidget_gongkuang->setItem(_index,2,newQTableWidgetItem(QString::number(_Beng_JinChuKou_ZongYaCha)));//总压差ui.tableWidget_gongkuang->vi......
  • 向QtableWidget中添加自定义widget崩溃异常: 0xC0000005
    1.问题描述想给QTableWidget添加QCheckBox,代码如下,tableWidget->setCellWidget老是崩溃(0x0F954E63(qwindows.dll)处(位于QStockView.exe中)引发的异常:0xC0000005: ),......
  • python3 使用paho-mqtt
    python版本:python3.8mqtt库:paho-mqtt1.6.1 一,消息发布创建pub.py,写入以下代码importtimefrompaho.mqttimportclientasmqtt_client#broker服务器broker......
  • vs2019 配置 qt6
    1.下载qt6我的目录C:\Qt\6.3.1\msvc2019_64\binC:\Qt\6.3.1\msvc2019_64\includeC:\Qt\6.3.1\msvc2019_64\lib 2.下载vs2019 3.vs下载qt插件扩展》管理扩展。......
  • mqtt协议
    一简述MQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上。MQTT最大优点在于,可以以极少的代码和有......