Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit
一、前言
QPlainTextEdit类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示和编辑纯文本的窗口。
滚屏区域基类
https://blog.csdn.net/u014491932/article/details/132245486?spm=1001.2014.3001.5501框架类QFrame
https://blog.csdn.net/u014491932/article/details/132188655?spm=1001.2014.3001.5501
QPlainTextEdit是纯文本的高级查看器/编辑器,它经过优化,可以处理大型文档并快速响应用户输入。QPlainTextEdit使用与QTextEdit非常相同的技术和概念,但针对纯文本处理进行了优化。QPlainTextEdit适用于段落和字符,实际应用中显示串口监控信息、网络传输信息、文本文件读取编辑等情景下使用。

二、QPlainTextEdit类
1、backgroundVisible
该属性表示确定调色板背景是否在文档区域之外可见。
bool backgroundVisible() const
void setBackgroundVisible(bool visible)
如果设置为true,则纯文本编辑器将在文本文档未覆盖的视口区域上绘制调色板背景。该特性使用户可以直观地区分使用调色板的基本色绘制的文档区域和未被任何文档覆盖的空白区域。

2、blockCount
此属性保存文档中文本块的数量(回车换行之后算单独一块)。默认情况下,在空文档中,此属性的值为1。
int blockCount() const
3、centerOnScroll
此属性用于确定光标是否应该在屏幕上居中。
bool centerOnScroll() const
void setCenterOnScroll(bool enabled)
设置为true,则纯文本编辑器将垂直滚动文档,使光标在视窗中心可见,允许文本编辑滚动到文档末尾以下。下图中我们光标往下到底部的时候,继续往下屏幕会居中。

设置为false,则纯文本编辑将滚动尽可能小的量,以确保光标可见。

4、cursorWidth
该属性表示光标的宽度,默认宽度为1个像素。
int cursorWidth() const
void setCursorWidth(int width)
5、documentTitle
该属性表示文档的标题,没有实际的效果。
QString documentTitle() const
void setDocumentTitle(const QString &title)
6、lineWrapMode
该属性表示自动换行策略,默认QPlainTextEdit::WidgetWidth。
QPlainTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(QPlainTextEdit::LineWrapMode mode)
QPlainTextEdit::LineWrapMode 描述 NoWrap 不换行 WidgetWidth 文字被包装在文本编辑的右边缘,换行发生在空白处,保持整个单词完整
7、wordWrapMode
该属性表示单词间换行策略,默认QTextOption::WrapAtWordBoundaryOrAnywhere。
QTextOption::WrapMode wordWrapMode() const
void setWordWrapMode(QTextOption::WrapMode policy)
QTextOption::WrapMode 描述 NoWrap 不换行 WordWrap 文本在单词边界处换行 ManualWrap 不换行 WrapAnywhere 文本可以在一行中的任何点换行,即使它出现在单词的中间。 WrapAtWordBoundaryOrAnywhere 优先在字边界处换行;否则,它将出现在行上的适当点上,甚至在单词的中间。
8、maximumBlockCount
该属性表示文档块的最大个数,默认为0。当超出最大限制的时候,会从开头删除块。如果设置的是负数或者零,表示不限制。设置此属性会禁用撤消重做历史记录。
int maximumBlockCount() const
void setMaximumBlockCount(int maximum)
9、overwriteMode
该属性保存用户输入的文本是否会覆盖现有文本。
和许多文本编辑器一样,纯文本编辑器小部件可以配置为使用用户输入的新文本插入或覆盖现有文本。如果此属性为true,现有文本将被新文本逐字符覆盖;否则,将在光标位置插入文本,取代现有文本。
大多数编辑器都是按下键盘的Insert键,开启此模式,软件实现可以响应按键事件,检测按下Insert按键的时候,切换此状态即可。
bool overwriteMode() const
void setOverwriteMode(bool overwrite)
10、placeholderText
该属性表示当文档内容为空的时候显示占位符提示文本。
QString placeholderText() const
void setPlaceholderText(const QString &placeholderText)

11、plainText
该属性表示当前文本内容,重新设置会覆盖之前的内容,撤销/重做历史将被重置,如果光标不在开头,那么文本格式也会被重置。
QString toPlainText() const
void setPlainText(const QString &text)
12、readOnly
该属性表示内容是否可只读,默认false。
bool isReadOnly() const
void setReadOnly(bool ro)
13、tabChangesFocus
该属性表示用户按下Tab键是否缩进,默认fasle。
bool tabChangesFocus() const
void setTabChangesFocus(bool b)
14、tabStopDistance
该属性表示以像素为单位保存制表位距离,默认情况下,此属性的值为80。这个属性在Qt 5.10中被引入。
qreal tabStopDistance() const
void setTabStopDistance(qreal distance)
15、textInteractionFlags
该属性表示显示文本如何与用户输入交互策略,readOnly属性会影响这个策略。
Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
Qt::TextInteractionFlag 描述 NoTextInteraction 不与文本做交互 TextSelectableByMouse 可以用鼠标选择文本,并使用上下文菜单或标准键盘快捷键将文本复制到剪贴板 TextSelectableByKeyboard 可以用键盘上的光标键选择文本。显示一个文本光标。 LinksAccessibleByMouse 链接可以用鼠标突出显示和激活。 LinksAccessibleByKeyboard 链接可以使用tab键聚焦,并使用enter键激活。 TextEditable 文本是完全可编辑的。 TextEditorInteraction TextSelectableByMouse+TextSelectableByKeyboard+TextEditable TextBrowserInteraction TextSelectableByMouse+LinksAccessibleByMouse+LinksAccessibleByKeyboard
16、undoRedoEnabled
该属性表示是否开启撤销和重做,默认开启。
bool isUndoRedoEnabled() const
void setUndoRedoEnabled(bool enable)
17、公共函数
1)anchorAt
返回位置pos处锚的引用,如果该点不存在锚,则返回一个空字符串。
QString anchorAt(const QPoint &pos) const
当我们需要在文档上打开一个链接,逻辑是鼠标在链接处按下并且在此链接上释放,可以通过鼠标按下和释放事件去检测鼠标事件触发。但我们如何去判断是否在同一个链接上触发的事件,这时候就需要用到anchorAt去检测某pos处的锚。
#ifndef PLAINTEXTEDIT_H
#define PLAINTEXTEDIT_H#include <QPlainTextEdit>
#include <QMouseEvent>class PlainTextEdit : public QPlainTextEdit
{Q_OBJECTprivate:QString clickedAnchorStr;public:explicit PlainTextEdit(QWidget *parent = 0) : QPlainTextEdit(parent){}void mousePressEvent(QMouseEvent *e){clickedAnchorStr = (e->button() & Qt::LeftButton) ? anchorAt(e->pos()) :QString();QPlainTextEdit::mousePressEvent(e);}void mouseReleaseEvent(QMouseEvent *e){if (e->button() & Qt::LeftButton && !clickedAnchor.isEmpty() &&anchorAt(e->pos()) == clickedAnchorStr){emit linkActivated(clickedAnchor);}QPlainTextEdit::mouseReleaseEvent(e);}signals:void linkActivated(QString);
};
2)canPaste
返回是否可以粘贴。
bool canPaste() const
3)createStandardContextMenu
当用户鼠标右击的时候创建和显示一个menu菜单栏小窗口,一般在contextMenuEvent事件中触发。
QMenu *createStandardContextMenu()
QMenu *createStandardContextMenu(const QPoint &position)
void MyQPlainTextEdit::contextMenuEvent(QContextMenuEvent *event){QMenu *menu = createStandardContextMenu();menu->addAction(tr("My Menu Item"));//...menu->exec(event->globalPos());delete menu;}
4)currentCharFormat
返回当前使用的的字符格式。
QTextCharFormat currentCharFormat() const
5)setCurrentCharFormat
设置当前使用的字符格式QTextCharFormat。
void setCurrentCharFormat(const QTextCharFormat &format)
6)cursorForPosition
返回某坐标下的文本光标QTextCursor(包含关于光标在文本中的位置和它所做的任何选择的信息),经典用法用来判断是否越界。
QTextCursor cursorForPosition(const QPoint &pos) const
7)cursorRect
返回一个包含文本光标的QRect矩形,经典用法用来判断是否越界。
QRect cursorRect(const QTextCursor &cursor) const
QRect cursorRect() const
8)document
返回文档类QTextDocument。
QTextDocument *document() const
9)setDocument
设置一个文档类QTextDocument,使它成为编辑器的文档。
void setDocument(QTextDocument *document)
10)ensureCursorVisible
通过滚动文档让光标可见。
void ensureCursorVisible()
11)setExtraSelections
void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections)
此函数允许用给定的颜色临时标记文档中的某些区域,指定为选择。例如,在编程编辑器中,用给定的背景颜色标记整行文本以指示断点的存在。
12)extraSelections
返回设置的额外选择项。
QList<QTextEdit::ExtraSelection> extraSelections() const
13)find
多个方法查找字符、表达式、正则表达式是否存在。
bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
bool find(const QRegExp &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags())
14)loadResource
加载由给定类型和名称指定的资源。这个函数是QTextDocument::loadResource()的扩展。
QVariant loadResource(int type, const QUrl &name)
15)moveCursor
通过执行给定的操作移动光标。
void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)
16)print
这相当于直接调用文档上的print方法,只不过该函数还支持QPrinter::Selection作为打印范围。
void print(QPagedPaintDevice *printer) const
17)toPlainText
纯文本形式返回字符串。
QString toPlainText() const
17、公共槽
void appendHtml(const QString &html) //尾部加入html格式文本void appendPlainText(const QString &text) //尾部添加纯文本void centerCursor() //居中光标void clear() //清除void copy() //复制void cut() //剪切void insertPlainText(const QString &text) //插入纯文本void paste() //粘贴void redo() //重做void selectAll() //选择全部void setPlainText(const QString &text) //清空之前的文本,并设置纯文本void undo() //撤销void zoomIn(int range = 1) //缩小void zoomOut(int range = 1 //放大
18、信号
//文本块数量改变触发
void blockCountChanged(int newBlockCount)//可复制触发
void copyAvailable(bool yes)//光标位置改变触发
void cursorPositionChanged()//修改状态发生更改时,触发此信号
void modificationChanged(bool changed)//可重做触发
void redoAvailable(bool available)//选择内容改变触发
void selectionChanged()//文本内容改变触发
void textChanged()//可撤销触发
void undoAvailable(bool available)//文档更新触发,rect表示新视口区域,dy表示滚动像素量
void updateRequest(const QRect &rect, int dy)
相关文章:
Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit
一、前言 QPlainTextEdit类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类https://blog.csdn.net/u014491932/article/details/132245486?spm1001.2014.3001.5501框架类QFramehttps://blo…...
数据结构-->栈
💕休对故人思故国,且将新火试新茶,诗酒趁年华💕 作者:Mylvzi 文章主要内容:详解链表OJ题 前言: 前面已经学习过顺序表,链表。他们都是线性表,今天要学习的栈也是一种线…...
强训第36天
C D C 193--1100 0001 194--1100 0010 196--1100 0100 198--1100 0110 能包括全部的且最小的为 1100 0xxx xxx为主机号,站三位 B MAC地址是绑定网卡的,全球唯一 D A C D IP网段 17为网络号 所以是 40.15.1aaa aaa(7位主机号).0 因为要划分2个子网 所以…...
PyTorch bug记录
1、RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same 这个错误是因为模型的权重是在GPU上,但是输入数据在CPU上。在PyTorch中,Tensor的类型和所在的设备(CPU或GPU)需…...
js中的正则表达式(一)
目录 1.什么是正则表达式 2.正则表达式在JavaScript中的使用场景: 3.正则表达式的语法: 1.什么是正则表达式 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象通常用来查找、替换那些符…...
免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件
免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件。 #################### 免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具&am…...
使用Mybatis Plus进行DAO层开发
一、特性 Mybatis应该大家现在都知道,而且在项目中都在使用,因为这块ORM框架让大家能专心业务SQL的编写,数据库的连接,连接池的使用都不用关心,极大的提高了生产效率。 今天要给大家介绍的另外一款ORM框架࿰…...
Android中如何不编译源生模块
如果想让自己的app 替换系统的app 比如使用闪电浏览器替换系统的Browser 首先把闪电浏览器放到 vendor/rockchip/common/apps Android.mk LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS)LOCAL_MODULE : Lightning LOCAL_SRC_FILES : $(LOCAL_MODULE).apk LOCAL_MODULE_C…...
安装Vue_dev_tools
Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接,有Vue2和Vue3的,dev_tools 以Google浏览器为例 点击设置(就是那三个点)->扩展程序->管理扩…...
【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典)
【数据结构入门指南】二叉树顺序结构: 堆及实现(全程配图,非常经典) 一、前言:二叉树的顺序结构二、堆的概念及结构三、堆的实现(本篇博客以实现小堆为例)3.1 准备工作3.2 初始化3.3 堆的插入3.3.1 向上调…...
css实现三角形的几种方法
css实现三角形的方法:1、使用边框实现三角形,利用透明边框和实色边框的组合,可以创建不同方向和大小的三角形;2、使用伪元素实现三角形,通过使用伪元素来创建一个占据父元素一半大小的实心三角形;3、使用tr…...
❤ Vue工作常用的一些动态数据和方法处理
❤ Vue工作常用的一些动态数据和方法处理 (1)动态拼接相对路径结尾的svg 错误写法一 ❌ 正确写法 🙆 <img :src"require(/assets//amazon/svg/homemenu${index}.svg)" style"height: 20px;display: block;margin: 0 au…...
SQLite的命令用法
学习数据库直达网站 https://www.runoob.com/sqlite/sqlite-tutorial.html(菜鸟教程) 这里只分享,基础操作,数据库创建打开……等等 用到查菜鸟教程即可 文章目录 学习数据库直达网站创建一个数据库方式1方式2 创建一个表格插入一…...
在jupyter notebook中使用海龟绘图
首先,安装ipyturtle3 ref:ipyturtle3 PyPI pip install ipyturtle3然后,安装ipycanvas ipycanvas是一个需要安装在与JupyterLab实例相同环境的包。此外,您需要安装nodejs,并启用JupyterLab ipycanvas小部件。 所有这些都在ipy…...
密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换
DH算法是第一个密钥交换算法,也是第一个得到形式化描述的公钥密码算法。 群论 DH密钥交换算法基于数学中的群论,群论也是当今大多数公钥密码的基础。 要使集合及其运算成为一个群,需要满足以下性质: 封闭性:群中两…...
Linux —— 进程间通信(管道)
目录 一,进程间通信 二,管道 匿名管道 命名管道 一,进程间通信 进程间通信(IPC,InterProcess Communication),即在不同进程之间进行信息的传播或交换;由于一般进程用户地址空间是…...
python常用
环境配置 conda Conda自动补全 在终端激活conda环境的时候按tab不能自动补全activate和环境名。安装后可用tab进行补全。 安装 conda-bash-completion 插件:GitHub 安装方法: conda install -c conda-forge conda-bash-completion常用命令 #创建虚拟…...
jeecg如何创建报表并配置到菜单中
当使用jeecg创建单表之后,需要进行报表显示,并把报表配置到菜单中,该如何操作呢?下面进行详细讲解。这里以课程表这张表为例进行讲解。 一.表单创建完成,并配置好菜单栏。具体步骤略,如下图: 二.创建积木报表 1.左侧边栏展开低代码开发菜单,进入报表设计器栏目 2.进…...
Servlet+JDBC实战开发书店项目讲解第12讲:会员管理功能
ServletJDBC实战开发书店项目讲解第12讲:会员管理功能 实现思路: 显示会员列表: 创建一个管理页面,用于显示所有会员的信息。在后端,创建一个Servlet来处理显示会员列表的请求。在该Servlet中,通过JDBC从数…...
java面向对象——继承以及super关键字
继承的概念 1. 被继承的类称为父类(超类),继承父类的类都称为子类(派生类) 2. 继承是指一个对象直接使用另一个对象的属性和方法,但是能继承非私有的属性和方法;(1) 构造方法不能被继承。(2) 但…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
