当前位置: 首页 > news >正文

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

一、前言

        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) constvoid 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.lryc.cn/news/135733.html

相关文章:

  • NineData中标移动云数据库传输项目(2023)
  • Java面向对象三大特性之多态及综合练习
  • HTTPS 握手过程
  • docker之Consul环境的部署
  • 服务机器人,正走向星辰大海
  • SciencePub学术 | 计算机及交叉类重点SCIE征稿中
  • Java面试题--SpringCloud篇
  • 【linux】常用的互斥手段及实例简述
  • STM32 F103C8T6学习笔记12:红外遥控—红外解码-位带操作
  • linux 环境收集core文件步骤
  • Git企业开发控制理论和实操-从入门到深入(一)|为什么需要Git|Git的安装
  • 上篇——税收大数据应用研究
  • 疲劳驾驶检测和识别4:C++实现疲劳驾驶检测和识别(含源码,可实时检测)
  • Android WakefulBroadcastReceiver的使用
  • python知识:什么是字符编码?
  • Vue2中使用Pinia
  • Docker关于下载,镜像配置,容器启动,停止,查看等基础操作
  • 穿越网络迷雾的神奇通道 - WebSocket详解
  • 无脑入门pytorch系列(五)—— nn.Dropout
  • Python土力学与基础工程计算.PDF-压水试验
  • Linux入门
  • 适合国内用户的五款ChatGPT插件
  • Dubbo Spring Boot Starter 开发微服务应用
  • linux中互斥锁,自旋锁,条件变量,信号量,与freeRTOS中的消息队列,信号量,互斥量,事件的区别
  • 安装docker服务,配置镜像加速器
  • CF 896 C Willem, Chtholly and Seniorious(珂朵莉树模板)
  • Android Jetpack组件的全方位分析
  • Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知
  • 猿辅导Motiff亮相IXDC 2023国际体验设计大会,发布新功能获行业高度关注
  • 【QT】重写QAbstractLIstModel,使用ListView来显示多列数据