一、前言
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></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 文本是完全可编辑的。 TextEditorInteraction TextSelectableByMouse+TextSelectableByKeyboard+TextEditable TextBrowserInteraction TextSelectableByMouse+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)