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) 但…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...