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.16.0 引入) YSSCore::Editor::TabCompleterItem::CompleterLevel | getCompleterLevel() const |
(自 YSS 0.16.0 引入) YSSCore::Editor::TabCompleterItem::ItemTypes | getCompleterTypeFilter() 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.16.0 引入) YSSCore::Editor::SyntaxHighlighter * | getSyntaxHighlighter() const |
(自 YSS 0.16.0 引入) qint32 | getTabWidth() const |
(自 YSS 0.15.2 引入) QTextCursor | getTextCursor() const |
(自 YSS 0.15.2 引入) QFont | getTextFont() const |
(自 YSS 0.16.0 引入) bool | isReadOnly() 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.16.0 引入) void | setCompleterLevel(YSSCore::Editor::TabCompleterItem::CompleterLevel level) |
(自 YSS 0.16.0 引入) void | setCompleterTypeFilter(YSSCore::Editor::TabCompleterItem::ItemTypes filter) |
(自 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.16.0 引入) void | setReadOnly(bool readOnly) |
(自 YSS 0.13.0 引入) void | setTabReload(bool reload) |
(自 YSS 0.16.0 引入) void | setTabWidth(qint32 width) |
(自 YSS 0.15.2 引入) void | setTextFont(const QFont &font) |
(自 YSS 0.14.0 引入) void | showFindAndReplace() |
重实现的受保护成员函数
(自 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.16.0] YSSCore::Editor::TabCompleterItem::CompleterLevel TextEdit::getCompleterLevel() const
return 当前补全提示的详细等级。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] YSSCore::Editor::TabCompleterItem::ItemTypes TextEdit::getCompleterTypeFilter() const
return 当前补全提示的类型过滤值,是YSSCore::Editor::TabCompleterItem::TypeFlag的逻辑或。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.13.0] int TextEdit::getCurrentLineNumber() const
return 当前光标所在的行号。行号从0开始。
Warning: 在0.16.0之前,行号从1开始。为了保持与Qt的QTextBlock::blockNumber()函数一致,0.16.0版本将行号调整为从0开始。
这个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.16.0] YSSCore::Editor::SyntaxHighlighter *TextEdit::getSyntaxHighlighter() const
return TextEdit的语法高亮器。
如果当前文件没有对应的语言服务器,返回nullptr。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] qint32 TextEdit::getTabWidth() const
return Tab键的宽度,单位为空格数。
默认值为4,即一个Tab键等于4个空格的宽度。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.15.2] QTextCursor TextEdit::getTextCursor() const
return TextEdit中的光标对象。
这个function 从 YSS 0.15.2 开始支持。
[since YSS 0.15.2] QFont TextEdit::getTextFont() const
return 用于显示文本内容的字体。
这个function 从 YSS 0.15.2 开始支持。
[since YSS 0.16.0] bool TextEdit::isReadOnly() const
return TextEdit是否为只读模式。
这个function 从 YSS 0.16.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.16.0] void TextEdit::setCompleterLevel(YSSCore::Editor::TabCompleterItem::CompleterLevel level)
level 补全提示详细等级
设置补全提示的详细等级。置为None时,不显示任何补全提示。
值得指出的是,为了插件行为的一致性,补全等级设置不影响相关函数的调用, 也就是说,即使补全等级设置为None,相关的补全函数仍然会被调用,只是它们的结果不会被显示出来。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.16.0] void TextEdit::setCompleterTypeFilter(YSSCore::Editor::TabCompleterItem::ItemTypes filter)
filter 类型过滤值
设置补全提示的类型过滤,是YSSCore::Editor::TabCompleterItem::TypeFlag的逻辑或。
这个function 从 YSS 0.16.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.16.0] void TextEdit::setReadOnly(bool readOnly)
readOnly 设置TextEdit是否为只读模式。
这个function 从 YSS 0.16.0 开始支持。
另请参阅 isReadOnly().
[since YSS 0.13.0] void TextEdit::setTabReload(bool reload)
reload 设置Tab键是否使用空格进行缩进。
默认为false,即使用制表符进行缩进。
这个function 从 YSS 0.13.0 开始支持。
另请参阅 isTabReload().
[since YSS 0.16.0] void TextEdit::setTabWidth(qint32 width)
width 设置Tab键的宽度,单位为空格数。
默认值为4,即一个Tab键等于4个空格的宽度。
这个function 从 YSS 0.16.0 开始支持。
[since YSS 0.15.2] void TextEdit::setTextFont(const QFont &font)
font 设置字体。
设置用于显示文本内容的字体。这个设置只影响文本编辑区域和行号的字体,不干涉鼠标悬停提示和Tab补全的字体设置。
这个function 从 YSS 0.15.2 开始支持。
[since YSS 0.14.0] void TextEdit::showFindAndReplace()
显示查找和替换页面。这个页面会在TextEdit的右上角显示,您也可以通过拖动来调整它的位置。 如果当前有选中的文本,那么这个选中的文本会被自动填充到查找输入框中。 请注意,它默认可用快捷键Ctrl+F来打开,您也可以通过调用这个函数来打开它。
这个function 从 YSS 0.14.0 开始支持。