qt富文本编辑基本知识(QTextBlockFormat、QTextListFormat)

news2025/1/17 3:08:43

可以参考该文章:QTextBlockFormat、QTextListFormat - 程序员大本营

核心知识如下:

  • 如果想开发一个富文本编辑器(html,markdown等常见格式),Qt已经为用户完成了几乎所有与编辑有关的具体工作,我们所要做的就是运用合适的类,调用合适的函数接口。可以参考qtcreator的例子列表里,参考qtextedit那个例子,非常全了,功能比肩一般的笔记撰写软件了。
  • 采用QTextEdit作为输入文本的容器,在它里面输入的可编辑文本由QTextDocument作为载体,而QTextBlock、QTextList、QTextFrame等则用来表示QTextDocument的元素,也可理解为QTextDocument的不同表现形式,可能为字符串、段落、列表(QTextList)、表格或是图片等。
  • 每种元素都有自己的格式,这些格式则用QTextCharFormat、QTextBlockFormat、QTextListFormat、QTextFrameFormat等类相对应来描述与实现。例如,QTextBlockFormat类对应于QTextBlock类,QTextBlock类用于表示一块文本,一般可以理解为一个段落,但并不只指段落,QTextBlockFormat类则用于表示这一块文本的格式,如缩进值、与四边的边距等。

类列表:(qtextcursor.h文件里)

class QTextCharFormat;
class QTextBlockFormat;
class QTextListFormat;
class QTextTableFormat;
class QTextFrameFormat;
class QTextImageFormat;

class QTextList;
class QTextTable;
class QTextFrame;
class QTextBlock;

各类之间的划分与关系可用下图进行描述:

  •  从上图可知,QTextCursor类是一个非常重要也经常会用到的类,它用于表示编辑文本中的光标。这个类提供了对QTextDocument文档的修改接口,所有对文档格式的修改,说到底都与光标有关,如改变字符的格式,指的是改变光标处字符的格式;改变段落的格式,指的是改变光标所在段落的格式,因此,QTextCursor类在文档编辑类程序中有着重要的作用,所有对QTextDocument的修改能够通过QTextCursor类实现
  • 各类的继承关系如下: 

  • 文档框架结构

框架(QTextFrame)
文本块(QTextBlock)
表格(QTextTable)
列表(QTextList)

  • 每种元素有相应的format类控制和表示

框架(QTextFrameFormat)
文本块(QTextBlockFormat)
表格(QTextTableFormat)
列表(QTextListFormat)
每个文档始终包含一个根框架,并且始终包含至少一个文本块(可能为空文本块)
在这里插入图片描述

其它参考文献:Qt 6: 1-7 富文本处理器_稀羽18的博客-CSDN博客

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

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

相关文章

工厂模式(FactoryPattern)

工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以…

Java:JDK8之后新的时间(推荐使用) ZoneId、 Instant、DataTimeFormatter、Period的相关API

ZoneId //目标:了解时区和带时区的时间。 //1、ZoneId的常见方法: // public static ZoneId systemDefault():获取系统默认的时区 zoneId zoneId ZoneId.systemDefault(); system.out.println(zoneId.getId()); system.out.println(zoneId);// public static Set<String>…

SOME/IP学习笔记1

SOA概念 在SOA中,每个服务就好像我们每一个人在社会中扮演的角色,在对别人提供着服务的同时,同时也享受着别人提供出来的服务,人与人之间,既是彼此独立的,又是需要互相通讯的。服务提供者将功能具象为一组接口,这样使用者就能知道如何调用服务,完成某件事情,得到某个…

亚马逊引流方式有哪些

亚马逊引流是指将潜在的买家从其他渠道引导到亚马逊平台上购买产品。以下是一些常见的亚马逊引流方式&#xff1a; 1、社交媒体营销&#xff1a;通过社交媒体平台如Facebook、Instagram、Twitter等发布有关你产品的信息、广告和优惠活动。吸引潜在客户点击链接&#xff0c;直接…

第七章 递归组件(树组件为例)

递归组件 封装树组件 App.vue <template><div class"App">App<MyTree :dataList"dataList"></MyTree></div> </template><script setup lang"ts"> import { ref, reactive } from "vue"…

Java当中更改源码/修复CVE-2016-1000027漏洞分析

Java当中更改源码/修复CVE-2016-1000027漏洞分析 文章目录 Java当中更改源码/修复CVE-2016-1000027漏洞分析1.基础知识&#xff1a;2.漏洞成因&#xff1a;3.解决方法:4.修改源码: 1.基础知识&#xff1a; ​ 要想分析首先要了解什么是Spring HTTP Invoker&#xff0c;HttpInv…

【考古】Java8 集合工具类Arrays

文章目录 一、概述二、常用方法三、简单使用3.1 Arrays的sort排序3.2 Arrays的binarySearch查找3.3 Arrays的fill填充3.4 Arrays的copyOf复制数组3.5 Arrays的copyOfRange复制部分Arrays的asList数组转链表 四、总结 一、概述 在 Java 的util包中提供了一个Arrays工具类用来操作…

深入了解Redis-实战篇-分布式锁

深入了解Redis-实战篇-分布式锁 一、故事背景二、知识点主要构成1、分布式锁基本原理2、不同实现方式对比3、基于redis的分布式锁3.1、获取锁3.2、释放锁 4、Redisson的可重入锁原理5、Redisson的锁重试和WatchDog机制 三、总结提升 一、故事背景 最近在系统的回顾redis相关的…

系列3-常见的高可用MySQL解决方案

高可用主要解决两个问题&#xff0c;如何实现数据共享和同步数据、如何处理failover&#xff0c;数据共享的解决方案一般是SAN&#xff0c;数据同步通过rsync和drbd技术来实现。 1、主从复制解决方案 这是MySQL自身的高可用解决方案&#xff0c;数据同步方法采用的是MySQL rep…

Eclipse进行debug

目录 基本步骤三种执行方式 -- 键盘快捷键variables面板移除debug过的项目通过eclipse调用具有软件界面的项目进行debug各个variable颜色具有的意义 基本步骤 点击eclipse右上角debug按钮 调出debug面板 点击小蜘蛛图标&#xff08;不是点绿色三角的Run&#xff09; 此时会进…

FPGA实现NIC 100G UDP协议栈网卡,UltraScale+ 100G Ethernet Subsystem驱动,提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、本25G/100G网卡基本性能简介4、详细设计方案接口概述PCIe HIPDMA IFAXI总线接口时钟同步处理TXQ和RXQ队列TXCQ和RXCQ队列完成EQ MAC PHYUltraScale 100G Ethernet Subsystem流水线队列管理发送调度程序端口和接口数据路径以及发送和接收…

怎么把图片变成表格?几个步骤轻松转换

如果您需要将一张图片中的数据转换成表格&#xff0c;这里有几个简单的步骤&#xff0c;可以帮助您完成这个转换过程。以下是需要注意的事项。 首先&#xff0c;我们先了解OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术。然后合理运用…

前端vue uni-app自定义精美海报生成组件

在当前技术飞速发展的时代&#xff0c;软件开发的复杂度也在不断提高。传统的开发方式往往将一个系统做成整块应用&#xff0c;一个小的改动或者一个小功能的增加都可能引起整体逻辑的修改&#xff0c;从而造成牵一发而动全身的情况。为了解决这个问题&#xff0c;组件化开发逐…

【《快速构建AI应用——AWS无服务器AI应用实战》——基于云的解决方案快速完成人工智能项目的指南】

基于云的人工智能服务可以自动完成客户服务、数据分析和财务报告等领域的各种劳动密集型任务。其秘诀在于运用预先构建的工具&#xff0c;例如用于图像分析的Amazon Rekognition或用于自然语言处理的AWS Comprehend。这样&#xff0c;就无须创建昂贵的定制软件系统。 《快速构…

如何用DHTMLX组件为Web应用创建甘特图?(二)

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求&#xff0c;是最完善的甘特图图表库。甘特图仍然是项目管理应用程序中最需要的工具之一&#xff0c;DHTMLX Gantt组件提供了能提升研发甘特图功能所需的重要工具。 在这篇…

Git在VSCode中的使用

1.Git图像化界面进行项目初始化&#xff08;git init&#xff09; 2. Git图形化界面对文件进行操作 当我们创建一个文件时&#xff0c;该文件后面有一个U&#xff0c;表示文件未跟踪。 我们在管理工具中输入日志并提交代码&#xff0c;相当于做了两件事&#xff0c;将文件由“…

ABB机器人RAPID编程常用指令介绍2

ABB机器人RAPID编程常用指令介绍2 1. 程序运行停止指令 Break 应用:机器人在当前指令行立刻停止运行,程序运行指针指向下一行指令,可以用start键继续运行机器人 举例: … Break; … 与stop指令的区别可以参考下面的示意图: 2. 程序运行停止指令 Exit 应用:机器人在当前指…

分享 一个类似 ps 辅助线功能

效果图片&#xff1a; 提示&#xff1a;这里的样式我做边做了修改&#xff0c;根据个人情况而定。 //你也可以npm下载 $ npm install --save vue-ruler-tool特点 没有依赖可拖动的辅助线快捷键支持 开始使用 1. even.js /*** description 绑定事件 on(element, event, han…

django使用ztree实现树状结构效果,子节点实现动态加载(l懒加载)

一、实现的效果 由于最近项目中需要实现树状结构的效果,考虑到ztree这个组件大家用的比较多,因此打算在django项目中集成ztree来实现树状的效果。最终实现的示例效果如下: 点击父节点,如果有子节点,则从后台动态请求数据,然后显示出子节点的数据。 二、实现思路 …

Linux常用命令——dpkg-deb命令

在线Linux命令查询工具 dpkg-deb Debian Linux下的软件包管理工具 补充说明 dpkg-deb命令是Debian Linux下的软件包管理工具&#xff0c;它可以对软件包执行打包和解包操作以及提供软件包信息。 语法 dpkg-deb(选项)(参数)选项 -c&#xff1a;显示软件包中的文件列表&am…