Yayin Story Studio logo Yayin Story Studio 项目文档
回到主页 用户手册

YSSCore::Editor::TextEdit Class

class YSSCore::Editor::TextEdit

这是YSS最关键的功能:代码编辑器. 详情...

头文件: #include <TextEdit>
自以下版本: YSS 0.13.0
继承自: YSSCore::Editor::FileEditWidget

公开成员函数

(自 YSS 0.13.0 引入) TextEdit(QWidget *parent = nullptr)
(自 YSS 0.13.0 引入) virtual ~TextEdit()
(自 YSS 0.14.0 引入) void clearFindAllSelection()
(自 YSS 0.14.0 引入) QList<QTextCursor> findAll(const QString &source, bool sourceAsRe = false, int options, bool multiSelection = false) const
(自 YSS 0.14.0 引入) QTextCursor findNext(const QString &source, bool sourceAsRe = false, qint32 from = -1, int options, bool relocate = false) const
(自 YSS 0.13.0 引入) int getCurrentLineNumber() const
(自 YSS 0.13.0 引入) QTextDocument *getDocument() const
(自 YSS 0.14.0 引入) qint32 getFontSize() const
(自 YSS 0.13.0 引入) qint32 getHoverTimeout() const
(自 YSS 0.13.0 引入) QString getPlainText() const
(自 YSS 0.13.0 引入) bool isTabReload() const
(自 YSS 0.13.0 引入) void moveCursorToLine(int lineNumber)
(自 YSS 0.14.0 引入) qint32 replaceAll(const QString &source, const QString &newText, bool sourceAsRe = false, int options)
(自 YSS 0.14.0 引入) bool replaceNext(const QString &source, const QString &newText, bool sourceAsRe = false, qint32 from = -1, int options, bool relocate = false)
(自 YSS 0.14.0 引入) void setFontSize(qint32 size)
(自 YSS 0.13.0 引入) void setHoverArea(QWidget *area)
(自 YSS 0.13.0 引入) void setHoverTimeout(qint32 ms)
(自 YSS 0.13.0 引入) void setPlainText(const QString &text)
(自 YSS 0.13.0 引入) void setTabReload(bool reload)
(自 YSS 0.14.0 引入) void showFindAndReplace()

Reimplemented Protected Functions

(自 YSS 0.13.0 引入) virtual bool onCopy() override
(自 YSS 0.13.0 引入) virtual bool onCursorToPosition(qint32 line, qint32 column) override
(自 YSS 0.13.0 引入) virtual bool onCut() override
(自 YSS 0.13.0 引入) virtual bool onOpen(const QString &path) override
(自 YSS 0.13.0 引入) virtual bool onPaste() override
(自 YSS 0.13.0 引入) virtual bool onRedo() override
(自 YSS 0.13.0 引入) virtual bool onReload() override
(自 YSS 0.13.0 引入) virtual bool onSave(const QString &path = "") override
(自 YSS 0.13.0 引入) virtual bool onSelectAll() override
(自 YSS 0.13.0 引入) virtual bool onUndo() override

详细说明

TextEdit是Yayin Story Studio中最关键、最核心的功能,即代码编辑器。

此类相比于Qt提供的QTextEdit,额外提供了其所缺失的现代代码编辑必备的几项基本功能:

  • 自动缩进
  • 多行Tab的缩进和反缩进
  • 行号
  • 鼠标悬停提示、Tab补全

基本上讲,以上这些额外补充的功能就已经满足了一个现代代码编辑器的基本需求。

语言服务

由于TextEdit是设计为Yayin Story Studio的内置代码编辑器,因此这个类的耦合性要稍微高一些。如果要 提供语言语法支持,就不能单独使用这个类,它会通过访问YSSCore::Editor::LangServerManager 来获取语言服务器的支持,并且在编辑器中提供语法高亮、鼠标悬停提示、Tab补全等功能。

因此,如果要为TextEdit提供语言支持,您需要首先实现一个继承自YSSCore::Editor::LangServer的类, 并且在其中实现语法高亮、鼠标悬停提示、Tab补全等功能。然后,您需要将这个语言服务器注册到YSSCore::Editor::LangServerManager中, TextEdit会自动按扩展名选择合适的语言服务器来提供支持。

标准文件编辑框架

为了统一Yayin Story Studio中全部的打开文件->路由合适的打开方式->编辑->保存的留存,该类 继承自YSSCore::Editor::FileEditWidget。并在YSSCore::Editor::FileServerManager中作为默认的通用文件打开方式使用。

Note: 一般来说,TextEdit单独使用或组合使用,不应该继承此类,但考虑到潜在需求,因此也未设置final。

Warning: 这类在0.14.0版本调整过虚函数,ABI完全不兼容。

成员函数文档

[since YSS 0.13.0] TextEdit::TextEdit(QWidget *parent = nullptr)

parent 父级窗口部件

TextEdit的构造函数。

这个function 从 YSS 0.13.0 开始支持。

[virtual noexcept, since YSS 0.13.0] TextEdit::~TextEdit()

TextEdit的析构函数。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.14.0] void TextEdit::clearFindAllSelection()

清除findAll函数创建的临时选区。临时选区只是视觉效果,不改变当前光标位置。

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.14.0] QList<QTextCursor> TextEdit::findAll(const QString &source, bool sourceAsRe = false, int options, bool multiSelection = false) const

source 目标字符串,可以是普通字符串,也可以是正则表达式,取决于 sourceAsRe 参数。 sourceAsRe 当为真时, source 被视作正则表达式进行查找;当为假时, source 被视作普通字符串进行查找。 options 查找选项,完全与QTextDocument::find()函数的flags参数相同。 multiSelection 当为真时,TextEdit会为每个匹配项创建选区以将它们临时高亮。请注意,这个临时选区只是视觉效果,不改变当前光标位置。

return 一个包含所有匹配结果的QTextCursor构成的列表。这些QTextCursor的特性完全由

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.14.0] QTextCursor TextEdit::findNext(const QString &source, bool sourceAsRe = false, qint32 from = -1, int options, bool relocate = false) const

source 目标字符串,可以是普通字符串,也可以是正则表达式,取决于 sourceAsRe 参数。 sourceAsRe 当为真时, source 被视作正则表达式进行查找;当为假时, source 被视作普通字符串进行查找。 from 查找的起始位置,默认为-1,表示从当前光标位置开始查找。 options 查找选项,完全与QTextDocument::find()函数的flags参数相同。 relocate 当为真时,如果找到匹配项,光标会被移动到这个匹配项的位置;当为假时,光标位置不变。

return 一个QTextCursor,表示找到的匹配项的位置。如果没有找到匹配项,返回一个isNull()为真的QTextCursor

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.13.0] int TextEdit::getCurrentLineNumber() const

return 当前光标所在的行号。行号从1开始。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QTextDocument *TextEdit::getDocument() const

return TextEdit中用于显示文本内容的QTextDocument对象。

通过这个对象,您可以实现更底层的文本操作,如语法高亮、文本格式化等。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.14.0] qint32 TextEdit::getFontSize() const

return 字体的字号。

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.13.0] qint32 TextEdit::getHoverTimeout() const

return 鼠标悬停提示的超时时间。单位为毫秒。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString TextEdit::getPlainText() const

return TextEdit中的文本内容。此函数会返回TextEdit中全部的文本内容。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool TextEdit::isTabReload() const

return Tab键是否使用空格进行缩进。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void TextEdit::moveCursorToLine(int lineNumber)

lineNumber 将光标移动到指定行

行号从1开始。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onCopy()

Reimplements: FileEditWidget::onCopy().

复制选中的文本。

return 如果成功复制文本,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用copy()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onCursorToPosition(qint32 line, qint32 column)

Reimplements: FileEditWidget::onCursorToPosition(qint32 lineNumber, qint32 column).

line 行号,从0开始。 column 列号,从0开始。

按给定行号和列重定位光标。行号和列号均从0开始。 这是对基类纯虚函数的实现,不应直接调用此函数。请使用cursorToPosition()函数。

return 如果成功将光标移动到指定位置,返回true;如果行号或列号无效,无法移动光标,则返回false。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onCut()

Reimplements: FileEditWidget::onCut().

剪切选中的文本。

return 如果成功剪切文本,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用cut()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onOpen(const QString &path)

Reimplements: FileEditWidget::onOpen(const QString &path).

path 文件路径

打开一个文件。

return 文件完全打开成功才会返回true,其他任何失败情况均返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用openFile()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onPaste()

Reimplements: FileEditWidget::onPaste().

粘贴剪贴板中的文本。

return 如果成功粘贴文本,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用paste()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onRedo()

Reimplements: FileEditWidget::onRedo().

重做上一步被撤销的操作。

return 如果成功重做操作,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用redo()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onReload()

Reimplements: FileEditWidget::onReload().

重新加载当前文件。

return 当文件成功重新加载时才会返回true,其他任何失败情况均返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用reloadFile()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onSave(const QString &path = "")

Reimplements: FileEditWidget::onSave(const QString &path).

path 文件路径

保存当前文件。

return 当文件成功保存时才会返回true,其他任何失败情况均返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用saveFile()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onSelectAll()

Reimplements: FileEditWidget::onSelectAll().

选择全部文本。

return 如果成功选择全部文本,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用selectAll()函数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual protected, since YSS 0.13.0] bool TextEdit::onUndo()

Reimplements: FileEditWidget::onUndo().

撤销上一步操作。

return 如果成功撤销操作,返回true;否则返回false。

这是对基类纯虚函数的实现,不应直接调用此函数。请使用undo()函数。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.14.0] qint32 TextEdit::replaceAll(const QString &source, const QString &newText, bool sourceAsRe = false, int options)

source 目标字符串,可以是普通字符串,也可以是正则表达式,取决于 sourceAsRe 参数。 sourceAsRe 当为真时, source 被视作正则表达式进行查找;当为假时, source 被视作普通字符串进行查找。 newText 要替换为的新字符串。 options 查找选项,完全与QTextDocument::find()函数的flags参数相同。

return 替换掉的匹配项数量。

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.14.0] bool TextEdit::replaceNext(const QString &source, const QString &newText, bool sourceAsRe = false, qint32 from = -1, int options, bool relocate = false)

source 目标字符串,可以是普通字符串,也可以是正则表达式,取决于 sourceAsRe 参数。 newText 要替换为的新字符串。 sourceAsRe 当为真时, source 被视作正则表达式进行查找;当为假时, source 被视作普通字符串进行查找。 from 查找的起始位置,默认为-1,表示从当前光标位置开始查找。 options 查找选项,完全与QTextDocument::find()函数的flags参数相同。 relocate 当为真时,如果找到匹配项,光标会被移动到这个匹配项的位置;当为假时,光标位置不变。

return 是否成功替换。

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.14.0] void TextEdit::setFontSize(qint32 size)

size 设置字体的字号。

这个function 从 YSS 0.14.0 开始支持。

[since YSS 0.13.0] void TextEdit::setHoverArea(QWidget *area)

area 设置鼠标悬停提示的显示区域。

如果不设置或设置为nullptr,那么悬停区域永远不会超出TextEdit的范围。 这可能在很多情况下会导致内容被遮挡, 因此我们建议您将悬停区域设置为一个更大的区域,如您的组件的主窗口等。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void TextEdit::setHoverTimeout(qint32 ms)

ms 设置鼠标悬停提示的超时时间。单位为毫秒。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void TextEdit::setPlainText(const QString &text)

text 设置TextEdit中的文本内容。

此函数会替换掉TextEdit中原有的全部文本内容。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void TextEdit::setTabReload(bool reload)

reload 设置Tab键是否使用空格进行缩进。

默认为false,即使用制表符进行缩进。

这个function 从 YSS 0.13.0 开始支持。

另请参阅 isTabReload().

[since YSS 0.14.0] void TextEdit::showFindAndReplace()

显示查找和替换页面。这个页面会在TextEdit的右上角显示,您也可以通过拖动来调整它的位置。 如果当前有选中的文本,那么这个选中的文本会被自动填充到查找输入框中。 请注意,它默认可用快捷键Ctrl+F来打开,您也可以通过调用这个函数来打开它。

这个function 从 YSS 0.14.0 开始支持。