Qt扫盲-QTextEdit理论总结

news2024/11/19 17:37:37

QTextEdit理论总结

  • 一、概述
  • 二、用途一:富文本阅读器
    • 1. 用法
    • 2. 快捷键绑定
  • 三、用途二:编辑器
    • 1. 用法
    • 2. 拖拽
    • 3. 快捷键绑定
  • 四、常用功能
  • 五、信号

一、概述

QTextEdit是一个先进的所见即所得的 富文本 查看器/编辑器,支持使用 html 风格的标签或 Markdown格式的富文本格式化。它经过优化,可以处理大型文档,并快速响应用户输入。

QTextEdit适用于段落和字符。段落是一个格式化的字符串,它被word包裹以适应widget的宽度。默认情况下,读取纯文本时,一个换行符表示一个段落。一个文档由零个或多个段落组成。段落中的单词按照段落的对齐方式对齐。段落之间用硬线分隔。段落中的每个字符都有自己的属性,例如字体和颜色。

QTextEdit可以显示图像,列表和表格。如果文本太大,无法在文本编辑的视口内查看,滚动条将出现。文本编辑可以加载纯文本和富文本文件。富文本可以使用HTML 4标记的一个子集来描述;有关更多信息,请参阅支持的HTML子集页面。

如果你只需要显示一小段富文本,请使用QLabel。

Qt对富文本的支持旨在为应用程序添加合理的在线帮助功能提供一种快速、可移植、高效的方式,并为富文本编辑器提供基础。如果你发现HTML支持不足以满足你的需求,可以考虑使用Qt WebKit,它提供了一个功能齐全的web浏览器控件。

QTextEdit上鼠标光标的形状默认是Qt::IBeamCursor。可以通过viewport()的cursor属性来改变这个属性。

在这里插入图片描述

二、用途一:富文本阅读器

1. 用法

QTextEdit可以显示一个大的HTML子集,包括表格和图像。

可以使用 setHtml() 设置或替换文本,它会删除任何现有的文本,并用调用 setHtml() 时传递的文本替换它。如果用旧HTML调用 setHtml() ,然后调用 toHtml() ,返回的文本可能有不同的标记,但渲染的是相同的。可以使用 clear() 删除整个文本。

文本也可以使用 setMarkdown()来设置或替换,同样的注意事项也适用:如果你调用了 tommarkdown(),返回的文本可能不同,但尽可能地保留了文本的含义。嵌入了HTML的Markdown可以被解析,但setHtml()有相同的限制;但是,toMarkdown()只编写“纯”Markdown,没有嵌入任何HTML。

文本本身可以使用QTextCursor类插入,也可以使用便捷的函数 insertHtml()、insertPlainText()、append() 或paste()。QTextCursor还能够向文档中插入复杂的对象,如表或列表,它还可以创建选择并对选择的文本应用更改。

默认情况下,文本编辑会在空白处包装单词,以适应文本编辑控件。setLineWrapMode()函数用于指定需要的换行方式,如果不需要换行,则指定NoWrap。调用setLineWrapMode()来设置固定像素宽度FixedPixelWidth或字符列(例如80列)FixedColumnWidth,使用setlinewrapcolumnwidth()指定的像素或列数。如果将换行设置为窗口组件的宽度WidgetWidth,则可以使用setWordWrapMode()指定是否在空格处换行。

find()函数可用于在文本中查找和选择给定的字符串。

如果你想限制QTextEdit中的总段落数,例如它通常在日志查看器中很有用,那么你可以使用QTextDocument的maximumBlockCount属性。

2. 快捷键绑定

当只读使用QTextEdit时,键绑定仅限于导航,文本只能用鼠标选择:

键名含义
Up向上移动一行.
Down向下移动一行
Left向左移动一个字符
Right向右移动一个字符
PageUp向上移动一页 以 viewport 为准.
PageDown向下移动一页 以 viewport 为准.
Home移动到最开始的位置
End文档结尾位置
Alt+Wheel水平滚动文本
Ctrl+Wheel缩放文本.
Ctrl+A全选文本

文本编辑可以提供一些元信息。例如,documentTitle()函数将返回HTML 标签中的文本。<br/> 注意:只有font-size没有设置为固定大小时,才能放大HTML文档。

三、用途二:编辑器

1. 用法

关于使用QTextEdit作为显示部件的所有信息也适用于这里。
当前字符格式的属性是通过setFontItalic()、setFontWeight()、setFontUnderline()、setFontFamily()、setFontPointSize()、setTextColor()和setCurrentFont()来设置的。当前段落的对齐方式使用setAlignment()来设置。
选择文本是由QTextCursor类处理的,它提供了创建选择文本、检索文本内容或删除选择文本的功能。使用textCursor()方法可以取得与用户可见的光标对应的对象。如果我们想在QTextEdit中设置一个选择,只需在QTextCursor对象上创建一个,然后使用setTextCursor()使该光标成为可见的光标。可以使用copy()将选区复制到剪贴板,也可以使用cut()将选区剪切到剪贴板。可以使用selectAll()选择整个文本。
当移动游标并且底层的格式化属性发生变化时,会发出currentCharFormatChanged()信号,在新的游标位置反映新的属性。
每当文本发生变化(由setText()引起或通过编辑器本身)时,就会触发textChanged()信号。
QTextEdit保存了一个QTextDocument对象,可以使用document()方法取得这个对象。也可以使用setDocument()设置自己的document对象。
QTextDocument提供了一个isModified()函数,如果文本自加载以来或自最后一次以false作为参数调用setModified以来被修改,该函数将返回true。此外,它还提供了undo和redo方法。

2. 拖拽

QTextEdit还支持自定义拖放行为。默认情况下,当用户将这些MIME类型的数据放入文档时,QTextEdit将插入纯文本、HTML和富文本。重新实现canInsertFromMimeData()和insertFromMimeData(),添加对其他MIME类型的支持。
例如,要允许用户将图像拖放到QTextEdit上,可以按以下方式实现这些函数:

  bool TextEdit::canInsertFromMimeData( const QMimeData *source ) const
  {
      if (source->hasImage())
          return true;
      else
          return QTextEdit::canInsertFromMimeData(source);
  }

通过返回true,我们添加了对图像MIME类型的支持。对于所有其他MIME类型,我们使用默认实现。

  void TextEdit::insertFromMimeData( const QMimeData *source )
  {
      if (source->hasImage())
      {
          QImage image = qvariant_cast<QImage>(source->imageData());
          QTextCursor cursor = this->textCursor();
          QTextDocument *document = this->document();
          document->addResource(QTextDocument::ImageResource, QUrl("image"), image);
          cursor.insertImage("image");
      }
  }

我们从MIME源持有的QVariant中解包图像,并将其作为资源插入文档中。

3. 快捷键绑定

含义
Backspace删除光标左边的字符.
Delete删除的字符向右光标。
Ctrl+C将选中的文本复制到剪贴板.
Ctrl+InsertCopy the selected text to the clipboard.
Ctrl+K删除的最后一行
Ctrl+V粘贴剪贴板的文本到文本编辑。
Shift+Insert粘贴剪贴板的文本到文本编辑。
Ctrl+X删除选中的文本,并将它复制到剪贴板.
Shift+Delete删除选中的文本,并将它复制到剪贴板.
Ctrl+Z撤销了最后一个操作.
Ctrl+Y恢复了最后一个操作.
Left移动光标向左一个字符。
Ctrl+Left向左移动光标一个词。
Right向右移动光标一个字符.
Ctrl+Right向右移动光标一个词.
Up移动光标一行。
Down移动光标一行。
PageUp移动光标向上一页。
PageDown移动光标一页向下一页
Home移动光标到一行的开始处。
Ctrl+Home移动光标到文本的开始。
End移动光标到行结束。
Ctrl+End移动光标到最后的文本.
Alt+Wheel水平滚动页面(wheel是鼠标滚轮).

要选择(标记)文本,请按住Shift键,同时按下一个移动键,例如,Shift+Right将选择右边的字符,Shift+Ctrl+Right将选择右边的单词,等等。

四、常用功能

下面是一些常用的功能,也即是文本编辑器的基础功能

  • append(const QString &text):就是在编辑器的最后添加 text
  • clear():清除编辑器的所有内容
  • copy():赋值内容到剪切板
  • cut():剪切内容到剪切板
  • insertHtml(const QString &text):插入html文档
  • insertPlainText(const QString &text):插入普通字符串
  • paste():从剪贴板粘贴到编辑器中
  • redo():撤销操作
  • scrollToAnchor(const QString &name): 把内容滚动到具体位置
  • selectAll():全选内容
  • setAlignment(Qt::Alignment a):文本对齐方式
  • setCurrentFont(const QFont &f):设置当前字体格式,里面有字体名称、字体大小等等。
  • setFontFamily(const QString &fontFamily):设置文字字体名称,比如是 微软雅黑,或者是 宋体 之类的
  • setFontItalic(bool italic):设置文字倾斜
  • setFontPointSize(qreal s):设置文字大小
  • setFontUnderline(bool underline):设置下划线
  • setFontWeight(int weight):设置文本加粗
  • setHtml(const QString &text):设置编辑器的内容为 html 格式
  • setMarkdown(const QString &markdown):设置编辑器的内容为 Markdown 格式
  • setPlainText(const QString &text):设置编辑器的内容为 纯字符 格式
  • setText(const QString &text):设置文本编辑的文本。文本可以是纯文本或HTML和文本编辑会试图猜测正确的格式。
  • setTextBackgroundColor(const QColor &c):设置
  • setTextColor(const QColor &c):
  • undo():撤销上次操作
  • zoomIn(int range = 1) :缩放,把文字往小的变
  • zoomOut(int range = 1):扩大,把文字往大的变

五、信号

信号名含义
copyAvailable(bool yes)该信号在文本编辑文本被选中或取消选择。
currentCharFormatChanged(const QTextCharFormat &f)就是字符的格式发生了改变的时候
cursorPositionChanged()鼠标位置改变
redoAvailable(bool available)即是 恢复 操作有效的时候
selectionChanged()选择的内容发生改变的时候
textChanged()文本内容改变的时候,比如删除修改文本
undoAvailable(bool available)就是 撤销 操作有效的时候

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

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

相关文章

【QT】.pro 文件

&#x1f33f;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;QT开发 .pro 文件是什么 .pro就是工程文件(project)&#xff0c;它是qmake自动生成的用于生产makefile的配置文件。类似于VS中的.sln 和vsproj文件 默认情况下&#xff0c;每个 Qt 项目都包含一个后缀名为…

Huffman编码实现文件的压缩和解压缩

一个项目&#xff0c;不过处理起来也比较麻烦&#xff0c;配套可以和文件传输放一起 前提知识&#xff1a; 哈夫曼树和哈夫曼编码的概念和构建 1&#xff1a;n个数构成的哈夫曼树一共有2*n-1个结点>8 -> 15 2&#xff1a;数字越大的数离根节点越近&#xff0c;越小的数离…

无线耳机跑步会不会掉、最适合跑步用的耳机排名

现在&#xff0c;喜欢运动的人越来越多了。大家都有体会&#xff0c;多数运动是相对枯燥的&#xff0c;在运动时听听音乐&#xff0c;那是多么惬意的事情啊。为此&#xff0c;体验过多款耳机&#xff0c;但令我很满意的甚少。相信不少喜欢运动的朋友都有着跟我一样的烦恼吧&…

【Java基础知识3】Java注释:单行、多行、文档注释(如何通过 javadoc 命令生成代码文档、如何在IEDA配置自动为所有的类都添加创建者和创建日期)

本文已收录专栏 &#x1f332;《Java进阶之路》&#x1f332; 目录 本文已收录专栏 &#x1f332;《Java进阶之路》&#x1f332; &#x1f350;01、单行注释 &#x1f350;02、多行注释 &#x1f350;03、文档注释 &#x1f350;04、文档注释的注意事项 &#x1f350;05、注释…

ceres学习笔记(二)

继续关于ceres官方doc里教程的学习&#xff0c;对于powells function的学习。 一、powells function 鲍威尔法&#xff0c;严格来说是鲍威尔共轭方向法&#xff0c;是迈克尔J.D.鲍威尔提出的一种求解函数局部最小值的算法。该函数不能是可微分的&#xff0c;并且不会导出衍生函…

spring用注解读取与获取对象

前言 上一篇博客简单的介绍了spring的功能与使用&#xff0c;可以看到我们创建一个对象&#xff0c;就需要在xml中存储一个bean对象&#xff0c;这种操作非常的繁琐&#xff0c;因此spring发明了使用注解来快捷存储bean对象 配置工作 我们在xml文件中写下面的代码片段 <…

基于风光储能和需求响应的微电网日前经济调度(Python代码实现)【0】

目录 0 引言 1 计及风光储能和需求响应的微电网日前经济调度模型 1.1风光储能需求响应都不参与的模型 1.2风光参与的模型 1.3风光和储能参与模型 1.4 风光和需求响应参与模型 1.5 风光储能和需求响应都参与模型 2 需求侧响应评价 2.1 负载率 2.2 可再生能源消纳率 …

Win10PE_V2.0Nvme网络版.iso 支持Nvme硬盘免费下载无需积分

Win10PE_V2.0Nvme网络版.iso 支持Nvme硬盘免费下载无需积分 V1.0版本发布 2022年1月19日 内置常用PE工具&#xff0c;7-Zip、EasyImageX_x64、XorBoot Uefi修复、NT6修复、Ghost、CGI、Google浏览器、PENetwork、RegWorkshop、迅雷迷你版、、BOOTICEx64、windows安装器、XP安…

路径计数2

路径计数2 题目描述 一个NNN \times NNN的网格&#xff0c;你一开始在(1,1)(1,1)(1,1)&#xff0c;即左上角。每次只能移动到下方相邻的格子或者右方相邻的格子&#xff0c;问到达(N,N)(N,N)(N,N)&#xff0c;即右下角有多少种方法。 但是这个问题太简单了&#xff0c;所以现…

MySQL 数据同步 Elasticsearch 的技术方案选型

文章目录1.同步双写2.异步双写3.定时任务4.数据订阅1.同步双写 优点&#xff1a;实现简单缺点&#xff1a; 业务耦合&#xff0c;商品的管理中耦合大量数据同步代码 影响性能&#xff0c;写入两个存储&#xff0c;响应时间变长 不便扩展&#xff1a;搜索可能有一些个性化需求&…

jvm学习的核心(三)---运行时数据区详解(1)

图片等相关信息来源于&#xff1a;尚硅谷宋红康JVM全套教程 1.程序计数器 程序计数器又叫pc寄存器&#xff0c;中文有两个名字 我们可以反编译字节码文件查看方法中操作指令对应的指令地址 javap -v "对应的class文件"为什么要用pc寄存器&#xff0c;pc寄存器有什…

13、Javaweb_Filter登陆验证动态代理过滤敏感词Listener

Filter&#xff1a;过滤器 1. 概念&#xff1a; * 生活中的过滤器&#xff1a;净水器,空气净化器&#xff0c;土匪、 * web中的过滤器&#xff1a;当访问服务器的资源时&#xff0c;过滤器可以将请求拦截下来&#xff0c;完成一些特殊的功能。 * 过滤器的作用&…

深入理解计算机系统_可执行目标文件和可重定位目标文件的3个区别

这篇笔记对比一下可执行目标文件和可执行目标的3个区别。下图分别是可重定位目标文件和可执行目标文件各段结构。 1.1 可执行目标文件和可重定位目标文件的3个区别 区别1&#xff1a;可执行目标文件的rel.text和.rel.data消失了 链接器将.o中.text和.data节整合到一起时&a…

【ROS2入门】理解 ROS 2 Topics 话题

大家好&#xff0c;我是虎哥&#xff0c;从今天开始&#xff0c;我将花一段时间&#xff0c;开始将自己从ROS1切换到ROS2&#xff0c;在上一篇中&#xff0c;我们一起了解ROS 2中节点的功能以及与之交互的工具&#xff0c; 这一篇&#xff0c;我们主要会围绕ROS中另外一个重要的…

RS232 RS485 TO ETH TCP-Modbus 测试

原来modbus 传感器都是有对应的指令码的&#xff0c;不同功能的指令码也不一样&#xff0c;比如测温度和湿度的指令码也是不一样的&#xff1b; 硬件连接如下图 &#xff08;温湿度传感器&#xff0c;板载SHT20&#xff09; ​ 编辑切换为居中 添加图片注释&#xff0c;不超…

华为VRRP、BFD实验配置

目录 VRRP实验配置 BFD实验配置 配置单跳检测 配置多跳检测 配置单臂回声 BFD与路由协议联动配置 BFD与OSPF联动 BFD与ISIS联动 BFD与BGP联动 VRRP实验配置 VRRP配置 AR1配置&#xff08;VRRP缺省优先级100&#xff09; int g0/0/0 ip add 192.168.10.1 24 vrrp vrid …

织音云站长扶持计划:可免费获得CDN或虚拟主机

活动介绍活动详情页&#xff1a;织音云站长扶持计划网站被恶意攻击时是中小站长最脆弱的时候&#xff0c;90%的站长都会动“关站不干了”的心思&#xff0c;夹在中间真的很难搞!因此织音云决定为中小站长提供免费的全球CDN加速服务和提供免费的虚拟主机,免备案&#xff01;只需…

智改数转水循环在线监测系统,提升企业生产安

江苏省政府印发《江苏省制造业智能化改造和数字化转型三年行动计划&#xff08;2022&#xff0d;2024年&#xff09;》&#xff0c;提出通过三年的努力&#xff0c;全省制造业数字化、网络化、智能化水平显著提升&#xff0c;新业态、新模式、新动能显著壮大&#xff0c;制造业…

linux系统中使用QT操作硬件蜂鸣器的方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用QT进行蜂鸣器的控制与实现。 目录 第一&#xff1a;资源基本简介 第二&#xff1a;应用实例的代码实现 第三&#xff1a;源文件“mainwindow.cpp”的具体实现 第四&#xff1a;程序运行效果 第一&#xff1a;资…

自动控制原理课程设计

一、实验目的(1)要求学生根据书上习题的要求&#xff0c;自行设计一校正装置&#xff0c;并用本 实验挂件 构成的模拟系统 进行实验和实际调试、使学生能认识到校正装置在系统中的重要性。(2)掌握工程中常用的 二阶系统 和 三阶系统 的工程设计方法。二、实验所需挂件及附件型 …