跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

YSSCore::Editor::FileEditWidget Class

class YSSCore::Editor::FileEditWidget

此类为Yayin Story Studio 提供文件编辑的基类. 详情...

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

YSSCore::Editor::TextEdit

公开成员函数

(自 YSS 0.13.0 引入) FileEditWidget(QWidget *parent = nullptr)
(自 YSS 0.13.0 引入) virtual ~FileEditWidget()
(自 YSS 0.13.0 引入) void cancelFileChanged()
(自 YSS 0.13.0 引入) virtual void closeEvent(QCloseEvent *event) override
(自 YSS 0.13.0 引入) void closeFile(bool autoAbandon = false)
(自 YSS 0.13.0 引入) bool copy()
(自 YSS 0.16.0 引入) QByteArray createFileBackup()
(自 YSS 0.13.0 引入) bool cursorToPosition(qint32 lineNumber, qint32 column)
(自 YSS 0.13.0 引入) bool cut()
(自 YSS 0.15.0 引入) QString getFileExt() const
(自 YSS 0.16.0 引入) QFileInfo getFileInfo() const
(自 YSS 0.13.0 引入) QString getFileName() const
(自 YSS 0.13.0 引入) QString getFilePath() const
(自 YSS 0.15.0 引入) QString getVirtualFileParam() const
(自 YSS 0.15.0 引入) bool isAutoAbandon() const
(自 YSS 0.13.0 引入) bool isFileChanged() const
(自 YSS 0.15.0 引入) bool isVirtualFile() const
(自 YSS 0.16.0 引入) bool openFile(const QFileInfo &fileInfo)
(自 YSS 0.13.0 引入) bool openFile(const QString &path)
(自 YSS 0.13.0 引入) bool paste()
(自 YSS 0.13.0 引入) bool redo()
(自 YSS 0.13.0 引入) bool reloadFile()
(自 YSS 0.16.0 引入) bool saveFile(const QFileInfo &fileInfo, bool deleteWhenSaveAs = false)
(自 YSS 0.15.0 引入) bool saveFile(const QString &path = "", bool deleteWhenSaveAs = false)
(自 YSS 0.13.0 引入) bool selectAll()
(自 YSS 0.15.0 引入) void setAutoAbandon(bool autoAbandon)
(自 YSS 0.13.0 引入) void setFileChanged()
(自 YSS 0.13.0 引入) bool undo()

信号

(自 YSS 0.14.0 引入) void fileChangeCanceled(const QString &filePath)
(自 YSS 0.13.0 引入) void fileChanged(const QString &filePath)
(自 YSS 0.15.0 引入) void fileClosed(const QString &filePath)
(自 YSS 0.15.0 引入) void fileRenamed(const QString &rawPath, const QString &changedPath)
(自 YSS 0.13.0 引入) void fileSaved(const QString &filePath)

受保护成员函数

(自 YSS 0.16.0 引入) virtual QByteArray onBackup()
(自 YSS 0.13.0 引入) virtual bool onClose()
(自 YSS 0.13.0 引入) virtual bool onCopy()
(自 YSS 0.13.0 引入) virtual bool onCursorToPosition(qint32 lineNumber, qint32 column)
(自 YSS 0.13.0 引入) virtual bool onCut()
(自 YSS 0.13.0 引入) virtual bool onOpen(const QString &path)
(自 YSS 0.13.0 引入) virtual bool onPaste()
(自 YSS 0.13.0 引入) virtual bool onRedo()
(自 YSS 0.13.0 引入) virtual bool onReload()
(自 YSS 0.13.0 引入) virtual bool onSave(const QString &path)
(自 YSS 0.13.0 引入) virtual bool onSelectAll()
(自 YSS 0.13.0 引入) virtual bool onUndo()
(自 YSS 0.15.0 引入) virtual bool onVirtualClose()
(自 YSS 0.15.0 引入) virtual bool onVirtualOpen(const QString &ext, const QString &fileName, const QString &param)
(自 YSS 0.15.0 引入) virtual bool onVirtualReload()
(自 YSS 0.15.0 引入) virtual bool onVirtualSave()

详细说明

FileEditWidget是所有文件编辑器的基类,所有文件编辑器都需要继承此类。

Note: 这类在0.15.0因引入虚拟文件概念而变更了虚函数顺序和声明,因此ABI与此前不同。

文件编辑器的职责

文件编辑器的职责是提供一个界面来编辑文件内容,并提供一些基本的文件操作功能, 如保存、撤销、重做等。具体来说,文件编辑器需要实现以下功能:

  • 1. 打开文件:能够打开一个指定路径的文件,并将其内容显示在编辑器中。
  • 2. 编辑文件:能够修改文件内容,并能够检测到文件内容的修改状态。
  • 3. 保存文件:能够将修改后的文件内容保存到指定路径的文件中。
  • 4. 其他操作:能够提供一些常用的编辑操作,如复制、剪切、粘贴、全选等。

上述未提及的功能,如重载、光标定位等都是可选功能。重载默认按照打开文件的方式重新加载文件内容,光标定位默认不实现。

文件编辑器的使用接口和实现接口

文件编辑器提供了一套使用接口和实现接口。使用接口是指外部代码调用该 文件编辑器时使用的接口,比如openFilesaveFile等; 实现接口是指文件编辑器的子类需要重载的接口,如onOpenonSave等。

目前,所有实现接口都以on开头,且设为protected,理应不被外部调用, 实际上也不应被继承类调用,除非你明确要复用基类的实现逻辑。

虚拟文件

YSSCore提供了一套被称之为虚拟文件的概念。有关该概念的详细阐述, 以及虚拟文件路径的格式,请参考 YSSCore::Editor::VirtualFilePath 类的相关文档。 这里我们只说明一下FileEditWidget在虚拟文件模式下的一些特殊行为。

openFile函数被调用时,如果传入的路径符合虚拟文件路径的格式(即以@开头,且包含!和?), 则FileEditWidget会自动将其识别为虚拟文件,并将isVirtualFile属性设为true。 此时,文件路径、文件名、扩展名等相关信息会按照虚拟文件路径的格式进行解析和返回。

在虚拟文件模式下,有关文件读写操作的四函数从onOpenonCloseonSaveonReload 变更为onVirtualOpenonVirtualCloseonVirtualSaveonVirtualReload,且默认实现为返回false。 但对应的外部使用接口不变,仍然为openFile、close、saveFilereloadFile等。

也就是说,外部调用者无需关心当前文件是否为虚拟文件,仍然按照正常的方式调用这些接口即可, FileEditWidget会根据当前文件的类型自动调用相应的实现接口。不过值得一提的是, 在虚拟文件模式下,saveFile传入的两个参数均会被忽略。

文件关闭的行为

在四大读写操作函数中,只有closeFile()是void类型,这意味着无法通过返回值来判断文件是否成功关闭了。 因为文件的关闭可能并非是从手动调用触发的,也可能是从用户点击关闭按钮触发的,而且也可能因 用户的要求中途取消了关闭操作。因此FileEditWidget通过重载closeEvent函数来统一处理所有 来源的关闭,且不可能从closeFile知道是否成功关闭。要获得文件的关闭状态,应该监听fileClosed信号。

此外,根据目前FileServerManager的实现,fileClosed信号发出之后,在下一个事件循环该 FileEditWidget对象就会被销毁,因此任何连接到fileClosed信号的槽函数都只应做一些立即操作, 并且不得缓存该对象的指针以备后用,因为该对象可能已经被销毁了。(此信号基本等同于 QObject::destroyed信号)

文件备份的行为

FileEditWidget提供了一个createFileBackup函数,用于创建当前文件的备份。该函数会调用onBackup虚函数, 并返回一个QByteArray,表示当前文件的备份内容。默认情况下,onBackup函数会返回一个空的QByteArray, 因此如果需要实现文件备份功能,子类需要重载onBackup函数,并返回实际的备份内容。

这个QByteArray必须是当前文件的完整内容,而非增量备份。也就是说,onBackup函数的返回值在被 直接写到磁盘后,形成的文件应该与当前编辑器中的内容完全一致。

根据YSS目前的实现,createFileBackup函数会定时调用以生成备份,并在相关文件被手动保存后 移除备份内容,因此,备份不作为版本控制的手段。(这与VSCode的历史编辑行为不同,VSCode的文件历史记录 作为Git记录的补充存在,且为增量记录)

QFileInfo规范化

自0.16.0版本开始,为了解决不同路径字符串可能实质上指向同一文件的问题,FileEditWidget在内部改用QFileInfo存储 真实文件的索引,并在先前返回QString的接口中永远直接返回QFileInfo::absoluteFilePath()的结果。 也就是说,所有返回文件路径的接口都将返回绝对路径,且在不同平台上遵循QFileInfo的规范化行为。 这对于减少潜在的文件路径比较问题有很大帮助。

成员函数文档

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

parent 为父对象。

构造FileEditWidget对象。

这个function 从 YSS 0.13.0 开始支持。

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

析构FileEditWidget对象。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void FileEditWidget::cancelFileChanged()

将当前文件内容标记为未修改状态。 此函数通常在派生类中被调用,当文件内容被保存或重新加载后,应调用此函数以更新文件状态。 之后,它会自动触发fileChangeCanceled信号,通知外部文件内容修改已被取消,并传递当前文件路径作为参数。

这个function 从 YSS 0.13.0 开始支持。

[override virtual, since YSS 0.13.0] void FileEditWidget::closeEvent(QCloseEvent *event)

event 关闭事件对象。

处理文件编辑器关闭事件。

此函数在文件编辑器尝试关闭时被调用,调用派生类实现的onClose()函数以决定是否允许关闭。 如果onClose()返回true,则接受关闭事件;否则忽略关闭事件,文件编辑器保持打开状态。

Warning: 派生类若重载了closeEvent(),应确保调用基类的实现以保持正确的关闭行为。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] void FileEditWidget::closeFile(bool autoAbandon = false)

关闭当前文件编辑器。autoAbandon 是否自动放弃未保存的修改。默认为false,即不自动放弃。

这个函数直接调用QWidget的close()函数,触发关闭事件。

关闭事件会调用派生类实现的onClose()函数以决定是否允许关闭。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::copy()

复制当前选中的内容到剪贴板。

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

此类调用派生类实现的onCopy()函数以实际处理复制逻辑。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.16.0] QByteArray FileEditWidget::createFileBackup()

创建当前文件的备份。

这函数直接调用onBackup()函数以获取备份数据,并返回该函数的返回值。

目前没有打算为FileEditWidget引入恢复备份的功能,因为YSS预计会直接将备份文件按 用户要求覆盖现有文件或显式的存储到别处并直接打开,不需要复写当前编辑态。

这个function 从 YSS 0.16.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::cursorToPosition(qint32 lineNumber, qint32 column)

lineNumber 行号,从1开始。 column 列号,从1开始。

将光标移动到指定的行号和列号位置。

return 如果光标成功移动到指定位置,返回true;否则返回false。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::cut()

剪切当前选中的内容到剪贴板。

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

此类调用派生类实现的onCut()函数以实际处理剪切逻辑。

这个function 从 YSS 0.13.0 开始支持。

[signal, since YSS 0.14.0] void FileEditWidget::fileChangeCanceled(const QString &filePath)

filePath 当前文件路径。

当文件内容修改被取消时,自动触发此信号。

这个function 从 YSS 0.14.0 开始支持。

[signal, since YSS 0.13.0] void FileEditWidget::fileChanged(const QString &filePath)

filePath 当前文件路径。

当文件内容被修改时,自动触发此信号。

这个function 从 YSS 0.13.0 开始支持。

另请参阅 setFileChanged().

[signal, since YSS 0.15.0] void FileEditWidget::fileClosed(const QString &filePath)

filePath 当前文件路径。

当文件最终被关闭时,自动触发此信号。

请注意,这函数发出之后,该FileEditWidget很快就会被销毁,且无法阻止。 请勿再保存该对象的指针以备后用。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.15.0] void FileEditWidget::fileRenamed(const QString &rawPath, const QString &changedPath)

rawPath 原文件路径。 changedPath 现文件路径。

当文件被成功保存,且路径与此前不一致时,自动触发此信号。

这个function 从 YSS 0.15.0 开始支持。

[signal, since YSS 0.13.0] void FileEditWidget::fileSaved(const QString &filePath)

filePath 当前文件路径。

当文件被成功保存时,自动触发此信号。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.15.0] QString FileEditWidget::getFileExt() const

return 当前文件的扩展名。

返回当前文件的扩展名(不带点)。如果当前没有打开任何文件,则返回空字符串。

对于虚拟文件路径,返回的是虚拟文件路径中的ext部分。

解析方式请参考 YSSCore::Editor::VirtualFilePath

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.16.0] QFileInfo FileEditWidget::getFileInfo() const

return 当前文件的QFileInfo对象。

返回当前文件的QFileInfo对象。如果是虚拟文件,返回一个空的(无效的)QFileInfo

下游可以直接使用此对象进行文件存在性、权限、元数据等判断,无需再次构造QFileInfo

这个function 从 YSS 0.16.0 开始支持。

[since YSS 0.13.0] QString FileEditWidget::getFileName() const

return 当前文件编辑器的文件名。

返回当前文件编辑器的文件名。如果当前没有打开任何文件,则返回空字符串。

对于虚拟文件,返回的是虚拟文件路径中的fileName部分。

解析方式请参考 YSSCore::Editor::VirtualFilePath

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] QString FileEditWidget::getFilePath() const

return 当前文件编辑器的文件路径。

返回当前文件编辑器的文件路径。如果当前没有打开任何文件,则返回空字符串。

注意,这可能是个虚拟文件路径,如果当前文件是通过FileServer打开的虚拟文件, 则返回的路径格式为 @ext!fileName?param。有关虚拟文件路径的详细格式, 请参考 YSSCore::Editor::VirtualFilePath

对于真实文件,永远返回从QFileInfo获得的绝对路径。不同平台上的路径规范行为由QFileInfo担保。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.15.0] QString FileEditWidget::getVirtualFileParam() const

return 当前虚拟文件的参数部分。

返回当前虚拟文件的参数部分。如果当前文件不是虚拟文件或没有参数,则返回空字符串。

对于虚拟文件路径,参数部分是路径中?之后的部分。

解析方式请参考 YSSCore::Editor::VirtualFilePath

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.15.0] bool FileEditWidget::isAutoAbandon() const

return 当前文件编辑器的自动放弃状态。

如果在关闭文件时会自动放弃未保存的修改,返回true;否则返回false。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::isFileChanged() const

return 当前文件内容是否被修改。

如果文件内容被修改,返回true;否则返回false。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.15.0] bool FileEditWidget::isVirtualFile() const

return 当前文件是否为虚拟文件。

如果当前文件为虚拟文件,返回true;否则返回false。

这个function 从 YSS 0.15.0 开始支持。

[virtual protected, since YSS 0.16.0] QByteArray FileEditWidget::onBackup()

派生类可以实现此虚函数以提供文件备份数据。

默认返回空的QByteArray,表示不提供备份数据。派生类可以根据需要重载此函数以返回当前文件的备份数据, 这个备份数据必须是完整文件的二进制内容,以便在需要时可以恢复文件。

Note: 如果返回QByteArray为空,YSS也不会为该文件创建备份文件,无需担心生成空文件。

这个function 从 YSS 0.16.0 开始支持。

[virtual protected, since YSS 0.13.0] bool FileEditWidget::onClose()

派生类可以实现此虚函数以处理文件关闭逻辑。

return 如果文件编辑器可以关闭,返回true;否则返回false。

这个函数默认会根据isFileChanged()的返回值来判断文件是否被修改过, 如果被修改过则弹出一个警告对话框询问用户是否保存修改。这应该可以 满足绝大部分情况下的关闭需求,因此如果没有特殊需求,派生类无需重载此函数。

如果isAutoAbandon()返回true,则无论文件是否被修改过,都会直接放弃修改并允许关闭。

Warning: 不要在这个函数里调用close或deleteLater等任何实质上真的 会关闭这个Widget的函数,会造成递归爆栈。这个函数的唯一作用是通过 return 告知YSS是否真的应该关闭它。因此你可以在里面做一些保存、警告等操作

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理复制逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

[virtual protected, since YSS 0.13.0] bool FileEditWidget::onCursorToPosition(qint32 lineNumber, qint32 column)

lineNumber 行号,从1开始。 column 列号,从1开始。

由派生类实现的函数,用于将光标移动到指定的行号和列号位置。

由于FileEditWidget最早是面向文本文件设计,因此 lineNumbercolumn 的语义是基于文本文件的行列号的。但如有需要, 也可以将其按照其他方式进行解释和使用,例如对于图片,可用理解为像素坐标等。

return 如果光标成功移动到指定位置,返回true;否则返回false。

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理剪切逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

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

派生类必须实现此纯虚函数以处理文件打开逻辑。 path 要打开的文件路径。

return 如果文件成功打开并加载,返回true;否则返回false。

Warning: 从0.15开始,这个函数可能因为onReload而重复调用,不保证 在整个生命周期内只调用一次。因此如果你在这个函数内尝试懒加载你的 FileEditWidget,应当首先检查资源是否已经初始化,避免出现内存泄漏。

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理粘贴逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理重做逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理文件重新加载逻辑。

return 如果文件成功重新加载,返回true;否则返回false。

在0.15之前的版本,这个函数默认返回false 从0.15开始,这个函数默认使用现在的文件路径重新调用onOpen()

这个function 从 YSS 0.13.0 开始支持。

[virtual protected, since YSS 0.13.0] bool FileEditWidget::onSave(const QString &path)

派生类必须实现此纯虚函数以处理文件保存逻辑。

path 要保存的文件路径。如果为空字符串,则使用当前文件路径。非空字符串在保存成功后会更新当前文件路径。

return 如果文件成功保存,返回true;否则返回false。

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理全选逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

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

派生类实现此纯虚函数以处理撤销逻辑。

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

这个function 从 YSS 0.13.0 开始支持。

[virtual protected, since YSS 0.15.0] bool FileEditWidget::onVirtualClose()

处理虚拟文件的关闭逻辑。

return 如果虚拟文件编辑器可以关闭,返回true;否则返回false。

默认返回true。

这个function 从 YSS 0.15.0 开始支持。

[virtual protected, since YSS 0.15.0] bool FileEditWidget::onVirtualOpen(const QString &ext, const QString &fileName, const QString &param)

ext 虚拟文件的扩展名。 fileName 虚拟文件的文件名。 param 其他参数字符串,可以包含任意内容,由调用者和实现者自行约定格式和含义。

处理虚拟文件的打开逻辑。

return 如果虚拟文件成功打开,返回true;否则返回false。

默认返回false。

这个function 从 YSS 0.15.0 开始支持。

[virtual protected, since YSS 0.15.0] bool FileEditWidget::onVirtualReload()

处理虚拟文件的重新加载逻辑。

return 如果虚拟文件成功重新加载,返回true;否则返回false。

这个实现默认重新调用onVirtualOpen

这个function 从 YSS 0.15.0 开始支持。

[virtual protected, since YSS 0.15.0] bool FileEditWidget::onVirtualSave()

处理虚拟文件的保存逻辑。

return 如果虚拟文件成功保存,返回true;否则返回false。

默认实现为返回false,表示虚拟文件不支持保存操作。派生类可以根据需要重载此函数以提供虚拟文件的保存功能。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.16.0] bool FileEditWidget::openFile(const QFileInfo &fileInfo)

打开指定QFileInfo对应的文件,并加载其内容。 fileInfo 要打开的文件信息对象。

return 如果文件成功打开并加载,返回true;否则返回false。

显然,此函数只能打开真实文件。

这个function 从 YSS 0.16.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::openFile(const QString &path)

打开指定路径的文件,并加载其内容。 path 要打开的文件路径。

return 如果文件成功打开并加载,返回true;否则返回false。

对于真实文件路径,等同于QFileInfo版本的重载。

从0.15.0开始,这个函数会事先判定文件路径是否满足虚拟文件路径格式(参见 YSSCore::Editor::VirtualFilePath),如果是的话,则调用 onVirtualOpen()函数打开。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::paste()

从剪贴板粘贴内容到当前光标位置。

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

此类调用派生类实现的onPaste()函数以实际处理粘贴逻辑。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::redo()

重做上一次被撤销的编辑操作。

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

此类调用派生类实现的onRedo()函数以实际处理重做逻辑。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::reloadFile()

重新加载当前文件编辑器的内容。

return 如果文件成功重新加载,返回true;否则返回false。

如果是虚拟文件,重新路由到onVirtualReload()函数;如果是普通文件,重新路由到onReload()函数。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.16.0] bool FileEditWidget::saveFile(const QFileInfo &fileInfo, bool deleteWhenSaveAs = false)

保存当前文件编辑器的内容到指定QFileInfo对应的路径。 fileInfo 要保存到的文件信息对象。 deleteWhenSaveAs 当执行另存为操作时,是否删除原文件。

return 如果文件成功保存,返回true;否则返回false。

此函数会调用派生类实现的onSave()函数以实际处理保存逻辑。保存成功后,首先触发 fileChangeCanceled信号,通知外部文件内容修改已被取消,并传递当前文件路径作为参数。

之后自动触发fileSaved信号,通知外部文件已被保存,并传递当前文件路径作为参数。

如果保存成功且路径与此前不一致,还会触发fileRenamed信号,通知外部文件已被重命名, 并传递原路径和新路径作为参数。

为了保持一致性,此函数不会重新判定路径是否为虚拟文件,因此不可能对虚拟文件使用 真实路径保存。反之,也不可能对真实文件使用虚拟路径保存。

这个function 从 YSS 0.16.0 开始支持。

[since YSS 0.15.0] bool FileEditWidget::saveFile(const QString &path = "", bool deleteWhenSaveAs = false)

保存当前文件编辑器的内容到指定路径。 path 要保存的文件路径。如果为空字符串,则使用当前文件路径。非空字符串在保存成功后会更新当前文件路径。 deleteWhenSaveAs 当执行另存为操作时,是否删除原文件。默认为false,即不删除原文件。如果设置为true, 可以视作重命名文件,保存成功后原文件将被删除。请谨慎使用此选项,以免误删重要文件。

return 如果文件成功保存,返回true;否则返回false。

在虚拟文件模式下,它会直接调用onVirtualSave()函数进行保存。虚拟保存时,pathdeleteWhenSaveAs 均无效。

对于真实文件,等同于QFileInfo版本的重载。

为了保持一致性,此函数不会重新判定路径是否为虚拟文件,因此不可能对虚拟文件使用 真实路径保存。反之,也不可能对真实文件使用虚拟路径保存。

这个function 从 YSS 0.15.0 开始支持。

[since YSS 0.13.0] bool FileEditWidget::selectAll()

选中当前文件编辑器中的所有内容。

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

此类调用派生类实现的onSelectAll()函数以实际处理全选逻辑。

这个function 从 YSS 0.13.0 开始支持。

[since YSS 0.15.0] void FileEditWidget::setAutoAbandon(bool autoAbandon)

设置当前文件编辑器的自动放弃状态。 autoAbandon 是否在关闭文件时自动放弃未保存的修改。默认为false,即不自动放弃。

这个function 从 YSS 0.15.0 开始支持。

另请参阅 isAutoAbandon().

[since YSS 0.13.0] void FileEditWidget::setFileChanged()

将当前文件内容标记为已修改状态。 此函数通常在派生类中被调用,当用户修改了文件内容时,应调用此函数以更新文件状态。 之后,它会自动触发fileChanged信号,通知外部文件内容已被修改,并传递当前文件路径作为参数。

这个function 从 YSS 0.13.0 开始支持。

另请参阅 fileChanged().

[since YSS 0.13.0] bool FileEditWidget::undo()

撤销上一次编辑操作。

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

此类调用派生类实现的onUndo()函数以实际处理撤销逻辑。

这个function 从 YSS 0.13.0 开始支持。