Qt应用开发(基础篇)——文本编辑窗口 QTextEdit

news2024/9/21 10:44:55

一、前言

        QTextEdit类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,用来显示富文本和纯文本的窗口部件。

框架类 QFramehttps://blog.csdn.net/u014491932/article/details/132188655滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486

        QTextEdit是一个先进的所见即所得的查看器/编辑器,支持使用html样式标签或Markdown格式的富文本格式。它经过优化,可以处理大型文档并快速响应用户输入。QTextEdit可以显示图标、列表、表格,由于继承于QAbstractScrollArea,所以如果内容放下不会自动显示滚动条。

二、 QTextEdit类

1、acceptRichText

        该属性表示是否接收富文本的插入,默认为true,如果设置为False,那么将只能接收纯文本的输入,来源于剪切板或者拖放。

bool acceptRichText() const
void setAcceptRichText(bool accept)

2、autoFormatting

        该属性表示自动格式化的策略,默认AutoNone。

QTextEdit::AutoFormatting autoFormatting() const
void setAutoFormatting(QTextEdit::AutoFormatting features)
QTextEdit::AutoFormattingFlag描述
AutoNone不做任何自动格式化
AutoBulletList自动创建项目列表(例如,当用户在最左边的列中输入星号('*')时,或在现有列表项中按Enter键。
AutoAll应用所有自动格式化,目前只有AutoBulletList。

         输入*号自动创建列表,按住Enter键往下创建。

3、document

        该属性表示文本编辑器的文档结构,使用QTextDocument封装。

QTextDocument *document() const
void setDocument(QTextDocument *document)

4、documentTitle

        该属性表示文档标题。

QString documentTitle() const
void setDocumentTitle(const QString &title)

5、html

        该属性表示提供一个html 4.0的字符串给编辑框,使用setHtml会改变当前编辑框的文本,之前撤销、重做的功能会被移除,当前文本格式会被重置。

QString toHtml() const
void setHtml(const QString &text)

         示例:

ui->textEdit->setHtml("<p style=\" margin-top:0px; margin-bottom:0px; "
                          "margin-left:0px; margin-right:0px; -qt-block-indent:0; "
                          "text-indent:0px;\"><span style=\" color:#ef2929;\">"
                          "[2023-08-03 17:00:27.718]# RECV HEX&gt;</span></p>");

6、lineWrapColumnOrWidth

        该属性表示文本换行的位置,配合文本换行策略lineWrapMode

        如果换行模式为FixedPixelWidth,则该值是距离文本编辑的左边缘的像素数,文本应该在该位置换行。

        如果换行模式为FixedColumnWidth,则该值是从文本编辑的左边缘开始的列号(以字符列为单位),文本应该在该列上换行。

int lineWrapColumnOrWidth() const
void setLineWrapColumnOrWidth(int w)

7、lineWrapMode

        该属性表示文本换行策略,默认WidgetWidth,文字被包装在文本编辑的右边缘,换行发生在空白处,保持整个单词完整。

        如果你想在单词内换行,使用setWordWrapMode()。

        如果你设置了FixedPixelWidth或FixedColumnWidth的换行模式,配合lineWrapColumnOrWidth,调用setLineWrapColumnOrWidth()来设置你想要的宽度。

QTextEdit::LineWrapMode lineWrapMode() const
void setLineWrapMode(QTextEdit::LineWrapMode mode)
QTextEdit::LineWrapMode描述
NoWrap不换行
WidgetWidth文字被包装在文本编辑的右边缘,换行发生在空白处,保持整个单词完整
FixedPixelWidth距离文本编辑的左边缘的像素数,文本应该在该位置换行。
FixedColumnWidth从文本编辑的左边缘开始的列号(以字符列为单位),文本应该在该列上换行

8、wordWrapMode

        该属性表示单词包装策略,默认WrapAtWordBoundaryOrAnywhere。

QTextOption::WrapMode wordWrapMode() const
void setWordWrapMode(QTextOption::WrapMode policy)
QTextOption::WrapMode描述
NoWrap不换行
WordWrap文本在单词边界处换行
ManualWrap不换行
WrapAnywhere文本可以在一行中的任何点换行,即使它出现在单词的中间。
WrapAtWordBoundaryOrAnywhere优先在字边界处换行;否则,它将出现在行上的适当点上,甚至在单词的中间。

8、markdown

        该属性表示读取和设置markdown格式的文本,参考上文html。

QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
 void setMarkdown(const QString &markdown)

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文本是完全可编辑的。
TextEditorInteractionTextSelectableByMouse+TextSelectableByKeyboard+TextEditable
TextBrowserInteractionTextSelectableByMouse+LinksAccessibleByMouse+LinksAccessibleByKeyboard

16、undoRedoEnabled

        该属性表示是否开启撤销和重做,默认开启。

bool isUndoRedoEnabled() const
void setUndoRedoEnabled(bool enable)

17、公共函数

 1)alignment

        返回对齐方式。

Qt::Alignment alignment() const

2)setAlignment

        设置对齐方式。

void setAlignment(Qt::Alignment a)

3)anchorAt

        返回位置pos处锚的引用,如果该点不存在锚,则返回一个空字符串。

QString anchorAt(const QPoint &pos) const

        参考实例:QPlainTextEdit

 4)canPaste

        返回是否可以粘贴。

bool canPaste() const

5)createStandardContextMenu

        当用户鼠标右击的时候创建和显示一个menu菜单栏小窗口,一般在contextMenuEvent事件中触发。

QMenu *createStandardContextMenu()
QMenu *createStandardContextMenu(const QPoint &position)
 void MyQTextEdit::contextMenuEvent(QContextMenuEvent *event)
 {
     QMenu *menu = createStandardContextMenu();
     menu->addAction(tr("My Menu Item"));
     //...
     menu->exec(event->globalPos());
     delete menu;
 }

7)currentCharFormat

        返回当前使用的的字符格式。

QTextCharFormat currentCharFormat() const

8)setCurrentCharFormat

        设置当前使用的字符格式QTextCharFormat

void setCurrentCharFormat(const QTextCharFormat &format)

9)cursorForPosition

        返回某坐标下的文本光标QTextCursor(包含关于光标在文本中的位置和它所做的任何选择的信息),经典用法用来判断是否越界。  

QTextCursor cursorForPosition(const QPoint &pos) const

10)cursorRect

        返回一个包含文本光标的QRect矩形,经典用法用来判断是否越界。

QRect cursorRect(const QTextCursor &cursor) const
QRect cursorRect() const

 11)ensureCursorVisible

        通过滚动文档让光标可见。

void ensureCursorVisible()

12)setExtraSelections

void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections)

        此函数允许用给定的颜色临时标记文档中的某些区域,指定为选择。例如,在编程编辑器中,用给定的背景颜色标记整行文本以指示断点的存在。

13)extraSelections

        返回设置的额外选择项。

QList<QTextEdit::ExtraSelection> extraSelections() const

14)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())

 15)loadResource

加载由给定类型和名称指定的资源。这个函数是QTextDocument::loadResource()的扩展。

QVariant loadResource(int type, const QUrl &name)

16)moveCursor

        通过执行给定的操作移动光标。

 void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor)

17)print

         这相当于直接调用文档上的print方法,只不过该函数还支持QPrinter::Selection作为打印范围。

void print(QPagedPaintDevice *printer) const

18)toPlainText

        纯文本形式返回字符串。

QString toPlainText() const

 19)font

        反回类font文本格式属性。

QString fontFamily() const
bool fontItalic() const
qreal fontPointSize() const
bool fontUnderline() const
int fontWeight() const

18、公共槽

//尾部插入文本
void append(const QString &text)

//清空文本
void clear()

//复制文本
void copy()

//剪切文本
void cut()

//插入html文本
void insertHtml(const QString &text)

//插入纯文本
void insertPlainText(const QString &text)

//复制
void paste()

//重做
void redo()

//滚动文本编辑,使具有给定名称的锚可见;如果名称为空,或者已经可见,或者没有找到,则不执行任何操作。void scrollToAnchor(const QString &name)

//选择全部
void selectAll()

//设置对齐方式
void setAlignment(Qt::Alignment a)

//设置当前文本格式
void setCurrentFont(const QFont &f)
void setFontFamily(const QString &fontFamily)
void setFontItalic(bool italic)
void setFontPointSize(qreal s)
void setFontUnderline(bool underline)
void setFontWeight(int weight)

//设置文本、文本背景、文本颜色
void setHtml(const QString &text)
void setMarkdown(const QString &markdown)
void setPlainText(const QString &text)
void setText(const QString &text)
void setTextBackgroundColor(const QColor &c)
void setTextColor(const QColor &c)

//撤销
void undo()

//缩放
void zoomIn(int range = 1)
void zoomOut(int range = 1)

19、信号

//可复制触发信号
void copyAvailable(bool yes)

//文本格式改变触发信号
void currentCharFormatChanged(const QTextCharFormat &f)

//光标位置改变触发信号
void cursorPositionChanged()

//可重做触发信号
void redoAvailable(bool available)

//选择内容改变触发信号
void selectionChanged()

//文本改变触发信号
void textChanged()

//可撤销触发信号
void undoAvailable(bool available)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/909471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于微信小程序的垃圾分类系统设计与实现(2.0 版本,附前后端代码)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1 简介 视频演示地址&#xff1a; 基于微信小程序的智能垃圾分类回收系统&#xff0c;可作为毕业设计 小…

【CHI】(十三)链路层

本章介绍了链路层&#xff0c;链路层为节点之间的基于数据包的通信和跨链路的互连提供了一种简化的机制。它包含以下几部分&#xff1a; IntroductionLinkFlitChannelPortNode interface definitionsIncreasing inter-port bandwidthChannel interface signalsFlit packet defi…

志凌海纳 SmartX 携手灵雀云推出全栈云原生联合解决方案

近日&#xff0c;北京志凌海纳科技有限公司&#xff08;以下简称“SmartX”&#xff09;与北京凌云雀科技有限公司&#xff08;以下简称“灵雀云”&#xff09;联合推出全栈云原生联合解决方案&#xff0c;为客户提供从基础设施到容器云平台的一站式服务&#xff0c;加速客户云…

滑动验证码-elementui实现

使用elementui框架实现 html代码 <div class"button-center"><el-popoverplacement"top":width"imgWidth"title"安全验证"trigger"manual"v-model"popoverVisible"hide"popoverHide"show&quo…

ABAP 定义复杂的数据结构

最近有个需求是实现ABAP数据类型与JASON类型的转换。想要创建个ABAP的数据类型来接JASON类型是个挺麻烦的事。例如下面这个JASON数据&#xff0c;是个很简单的数据结构。但对ABAP来说有4层了&#xff0c;就有点复杂了。 不过ABAP的数据类型也是支持直接定义数据结构的嵌套的。如…

Docker之Compose

目录 前言 1.1Docker Swarm与Docker Compose 1.1.1Docker Swarm 1.1.2Docker Compose 1.1.2.1 三层容器 ​编辑 二、YAML 2.1YAML概述 2.2注意事项 2.3Docker Compose 环境安装 2.3.1下载 三、Docker-Compose配置常用字段 四、Docker-compose常用命令 五、Docker…

Ubuntu搭建CT_ICP里程计的环境暨CT-ICP部署

CT-ICP部署以及运行复现过程 0.下载资源&#xff0c;并按照github原网址的过程进行。1.查看所需要的各个部分的版本。2.安装clang编译器3.进行超级构建3.1标准进行3.2构建过程中遇到的问题 4.构建并安装CT-ICP库4.1标准进行4.2遇到的问题及解决办法 5.构建 CT-ICP 的 ROS 包装5…

工作纪实37-mybatis-plus关闭结果集输出log

1.springbootmybatis-pluslogback.xml组合&#xff0c;运行mapper会把sql查询会把结果也打印出来&#xff09;&#xff0c;但是就是不想让它输出到控制台&#xff0c;今天就来记录一下如何操作才能不把sql结果集打印出来&#xff0c;当然sql语句还是会打印的。 2、修改配置 …

bh001- Blazor hybrid / Maui 使用摄像头和扫码快速教程

1. 建立工程 bh001_camera_barcode 源码 2. 添加 nuget 包 BlazorHybrid.Maui.Permissions 因为源码比较长,主要是一些检查和申请权限相关代码,就不占用篇幅列出,感兴趣的同学直接打开源码参考 3. 添加摄像头权限 安卓 双击编辑文件,或者手工添加 <uses-permission an…

二、11.系统交互

fork 函数原型是 pid_t fork(void&#xff09;&#xff0c;返回值是数字&#xff0c;该数字有可能是子进程的 pid &#xff0c;有可能是 0&#xff0c;也有可能是-1 。 1个函数有 3 种返回值&#xff0c;这是为什么呢&#xff1f;可能的原因是 Linux 中没有获取子进程 pid 的方…

ORCA优化器浅析——DXLToPlStmt[CTranslatorDXLToPlStmt]

如上图所示是将plan_dxl转为plan_stmt的主入口函数。其主要工作就是创建plan_id_generator、motion_id_generator、param_id_generator和table_list、subplans_list&#xff0c;并将其设置到CContextDXLToPlStmt dxl_to_plan_stmt_ctxt中供后续流程调用&#xff1b;初始化CTran…

LION AI 大模型落地,首搭星纪元 ES

自新能源汽车蓬勃发展以来&#xff0c;随着潮流不断进步和变革的“四大件”有着明显变化。其中有&#xff1a;平台、智能驾驶、配置、以及车机。方方面面都有着不同程度的革新。 而车机方面&#xff0c;从以前老旧的媒体机、 CD 机发展至如今具有拓展性、开放性、智能化的车机…

Quartz任务调度框架介绍和使用

一、Quartz介绍 Quartz [kwɔːts] 是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;完全由Java开发&#xff0c;可以用来执行定时任务&#xff0c;类似于java.util.Timer。但是相较于Timer&#xff0c; Quartz增加了很多功能&#xff1a; 1.持久性作业 …

物联网(IoT)安全挑战与解决方案: 分析物联网设备面临的安全威胁,以及如何设计和管理安全的IoT生态系统

第一章&#xff1a;引言 随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;作为连接世界的桥梁&#xff0c;已经成为现代社会不可或缺的一部分。然而&#xff0c;随着IoT设备数量的不断增加&#xff0c;其安全问题也日益显著。本文将深入探讨IoT领域面临的安全…

【Ubuntu20.04安装Nvidia驱动、CUDA和CUDNN】

Ubuntu20.04安装Nvidia驱动、CUDA和CUDNN 1 Nvidia驱动安装1.1 安装1.2 安装Nvidia可能会遇到的问题1.2.1 NVIDIA 驱动与 Nouveau 驱动不兼容1.2.2 ERROR: Unable to find the development tool cc 2 CUDA安装2.1 下载和安装2.2 配置CUDA环境 3 安装CUDNN4 切换CUDA版本 1 Nvid…

min-height到底是什么?

1、概念 给元素设置最小高度&#xff0c;当height小于 min-height &#xff0c;min-height会覆盖height的值 2、案例 如果我有一个盒子A&#xff0c;A设置了min-height的高度为200px&#xff1b;并设置了overflow&#xff1a;auto&#xff0c;那么如果里面的内容超过了200px…

【经验】VScode 远程连接 Ubuntu 出错,Could not establish connection

用VScode常常会碰到以下情况&#xff0c;Could not establish connection。 先介绍一下VScode远程连接和终端SSH连接的区别&#xff1a;终端直接用SSH连接时&#xff0c;只需要开启SSH服务&#xff0c;并消耗少量的内存即可&#xff1b;VScode连接时&#xff0c;会自动在服务器…

MySQL基础篇 (三)

函数 回顾学过的函数 countavgsumminmax 数值函数 做数值运算的 演示 #ABS(X)SELECT ABS(0); #SIGN(X)SELECT SIGN(-10); #SQRT(X)SELECT SQRT(4); #LEAST(value1,value2,...)SELECT LEAST(10,20,15);字符串函数 做字符串处理&#xff08;CONCAT()&#xff09; 演示 #CO…

HCIP学习--三层架构

未完成 网关作为了一个广播域的中心出口&#xff1b;生成树的根网桥也是一棵树的中心&#xff0c;也是流量的集合点&#xff1b; 若将两者分配不同的设备将导致网络通讯资源浪费&#xff0c;故强烈建议两者在同一台汇聚层设备上 举个例子 看下图若VLAN2要去找VLAN3设备需要…