EditorManager 类

class Core::EditorManager

EditorManager 类根据文件的 MIME 类型管理为文件创建的编辑器。<a href="#details">更多...</a>

头部文件 #include <coreplugin/editormanager/editormanager.h>
继承 QObject

公共类型

枚举OpenEditorFlag { NoFlags, DoNotChangeCurrentEditor, IgnoreNavigationHistory, DoNotMakeVisible, OpenInOtherSplit, …, AllowExternalEditor }
标志OpenEditorFlags

公共槽

信号

voidaboutToSave(Core::IDocument *document)
voidautoSaved()
voidcurrentDocumentStateChanged()
voidcurrentEditorAboutToChange(Core::IEditor *editor)
voidcurrentEditorChanged(Core::IEditor *editor)
voiddocumentClosed(Core::IDocument *document)
voiddocumentOpened(Core::IDocument *document)
voiddocumentStateChanged(Core::IDocument *document)
voideditorAboutToClose(Core::IEditor *editor)
voideditorCreated(Core::IEditor *editor, const Utils::FilePath &filePath)
voideditorOpened(Core::IEditor *editor)
voideditorsClosed(QList<Core::IEditor *> editors)
voidsaved(Core::IDocument *document)

静态公共成员

voidactivateEditor(Core::IEditor *editor, Core::EditorManager::OpenEditorFlags flags = NoFlags)
Core::IEditor *activateEditorForDocument(Core::IDocument *document, Core::EditorManager::OpenEditorFlags flags = NoFlags)
voidactivateEditorForEntry(Core::DocumentModel::Entry *entry, Core::EditorManager::OpenEditorFlags flags = NoFlags)
voidaddCloseEditorListener(const std::function<bool (IEditor *)> &listener)
voidaddCurrentPositionToNavigationHistory(const QByteArray &saveState = QByteArray())
voidaddNativeDirAndOpenWithActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry)
voidaddPinEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry)
voidaddSaveAndCloseEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry, Core::IEditor *editor = nullptr)
voidclearUniqueId(Core::IDocument *document)
bool关闭所有文档()
boolcloseDocuments(const QListdocuments, bool askAboutModifiedEditors = true)
boolcloseDocuments(const QListentries)
boolcloseEditors(const QListeditorsToClose, bool askAboutModifiedEditors = true)
voidcloseOtherDocuments(Core::IDocument *document)
Core::IDocument *当前文档()
Core::IEditor *当前编辑器()
void剪切前导航历史()
Utils::TextFileFormat::LineTerminationMode默认换行符()
QTextCodec *默认文本编码()
Utils::FilePathsgetOpenFilePaths(QFileDialog::Options options = {})
Core::EditorManager *实例()
boolisAutoSaveFile(const QString &filePath)
qint64最大文本文件大小()
Core::IEditor *openEditor(const Utils::FilePath &filePath, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)
Core::IEditor *openEditorAt(const Utils::Link &link, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)
voidopenEditorAtSearchResult(const Utils::SearchResultItem &item, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)
Core::IEditor *openEditorWithContents(Utils::Id editorId, QString *titlePattern = nullptr, const QByteArray &contents = QByteArray(), const QString &uniqueId = QString(), Core::EditorManager::OpenEditorFlags flags = NoFlags)
boolopenExternalEditor(const Utils::FilePath &filePath, Utils::Id editorId)
voidpopulateOpenWithMenu(QMenu *menu, const Utils::FilePath &filePath)
Core::IDocument::ReloadSetting重新加载设置()
boolsaveDocument(Core::IDocument *document)
voidsetLastEditLocation(const Core::IEditor *editor)
boolskipOpeningBigTextFile(const Utils::FilePath &filePath)
QList可见编辑器()

详细描述

当用户想要编辑或创建文件时,EditorManager会扫描所有的IEditorFactory接口以找到合适的编辑器。然后所选择的IEditorFactory会被询问创建编辑器,这是根据文件的MIME类型来决定的。

用户可以在同一个屏幕或多个屏幕上同时处理和查看多个文件时,拆分编辑器视图或在新窗口中打开编辑器。更多相关信息,请参阅拆分编辑器视图

插件使用EditorManager在编辑器中打开文档或关闭它们,并在文档打开、关闭或保存时接收通知。

成员类型文档

enum EditorManager::OpenEditorFlag
flags EditorManager::OpenEditorFlags

此枚举指定在编辑器中打开文件时的设置。

常量描述
Core::EditorManager::NoFlags0不使用任何设置。
Core::EditorManager::DoNotChangeCurrentEditor1不切换到新打开的编辑器。
Core::EditorManager::IgnoreNavigationHistory2不向打开的编辑器的导航历史中添加条目。
Core::EditorManager::DoNotMakeVisible4不会强制编辑器变为可见。
Core::EditorManager::OpenInOtherSplit8在窗口的另一个分割中打开文档。
Core::EditorManager::DoNotSwitchToDesignMode16在当前模式打开文档。
Core::EditorManager::DoNotSwitchToEditMode32在当前模式打开文档。
Core::EditorManager::SwitchSplitIfAlreadyVisible64如果文档已在其中可见,则切换到另一个分割。
Core::EditorManager::DoNotRaise128防止将 Qt Creator 窗口置于前台。
Core::EditorManager::AllowExternalEditor256允许在外部编辑器中打开文件。

OpenEditorFlags 类型是 QFlags 的 typedef。它存储了 OpenEditorFlag 值的 OR 组合。

成员函数文档

[信号] void EditorManager::aboutToSave(Core::IDocument *document)

在保存 document 之前发出此信号。

[静态] void EditorManager::activateEditor(Core::IEditor *editor, Core::EditorManager::OpenEditorFlags flags = NoFlags)

使用指定的 flags 在活动分割中激活 editor

另请参阅currentEditor()。

[静态] Core::IEditor *EditorManager::activateEditorForDocument(Core::IDocument *document, Core::EditorManager::OpenEditorFlags flags = NoFlags)

使用指定的 flags 在活动分割中为 document 激活编辑器。

[静态] void EditorManager::activateEditorForEntry(Core::DocumentModel::Entry *entry, Core::EditorManager::OpenEditorFlags flags = NoFlags)

使用指定的 flags 在活动分割中为 entry 指定的文档激活编辑器。

[静态] void EditorManager::addCloseEditorListener(const std::function<bool (IEditor *)> &listener)

listener 添加到询问是否可以关闭编辑器的钩子中。

当请求关闭编辑器时,会调用所有监听器。如果有任何一个调用返回 false,则进程将终止,事件将被忽略。如果所有调用都返回 true,则发出 editorAboutToClose() 并接受事件。

[静态] void EditorManager::addCurrentPositionToNavigationHistory(const QByteArray &saveState = QByteArray())

saveState 指定的当前光标位置添加到导航历史记录中。如果 saveStatenull(默认值),将使用活动编辑器的当前状态。否则,saveState 必须是活动编辑器的有效状态。

另请参阅IEditor::saveState()。

[静态] void EditorManager::addNativeDirAndOpenWithActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry)

将文档 entry 的本地目录处理和打开方式菜单项添加到上下文菜单 contextMenu 中。

[静态] void EditorManager::addPinEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry)

将文档 entry 的固定编辑器菜单项添加到上下文菜单 contextMenu 中。

[静态] void EditorManager::addSaveAndCloseEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry, Core::IEditor *editor = nullptr)

将文档 entry 和编辑器 editor 的保存、关闭和其他编辑器上下文菜单项添加到上下文菜单 contextMenu 中。

[信号] void EditorManager::autoSaved()

在自动保存被触发后发出此信号。

[静态] void EditorManager::clearUniqueId(Core::IDocument *document)

清除文档 document 的唯一标识符。

另见 openEditorWithContents().

[静态] bool EditorManager::closeAllDocuments()

关闭所有打开的文档,除了固定文件。

返回是否关闭了所有编辑器。

[静态槽] bool EditorManager::closeAllEditors(bool askAboutModifiedEditors = true)

关闭所有打开的编辑器。如果 askAboutModifiedEditorstrue,则在关闭编辑器之前提示用户保存更改。

返回是否关闭了所有编辑器。

[静态] bool EditorManager::closeDocuments(const QList<Core::IDocument *> &documents, bool askAboutModifiedEditors = true)

关闭 documents。如果 askAboutModifiedEditorstrue,则在关闭文档之前提示用户保存更改。

返回是否关闭了文档。

[静态] bool EditorManager::closeDocuments(const QList<Core::DocumentModel::Entry *> &entries)

关闭由 entries 指定的文档。

返回是否关闭了所有文档。

[静态] bool EditorManager::closeEditors(const QList<Core::IEditor *> &editorsToClose, bool askAboutModifiedEditors = true)

关闭由 editorsToClose 指定的编辑器。如果 askAboutModifiedEditorstrue,则在关闭编辑器之前提示用户保存更改。

返回是否关闭了所有编辑器。

通常来说,使用 closeDocuments() 是更好的选择。

另请参阅closeDocuments

[静态] void EditorManager::closeOtherDocuments(Core::IDocument *document)

关闭除 document 和已固定文件外的所有打开文档。

[静态槽] void EditorManager::closeOtherDocuments()

关闭除当前文档外的所有打开文档。

[静态] Core::IDocument *EditorManager::currentDocument()

返回当前活动编辑器中的文档。

另请参阅currentEditor()。

[信号] void EditorManager::currentDocumentStateChanged()

当前文档的元数据(如文件名或修改状态)发生变化时,会发出此信号。

另请参阅IDocument::changed

[静态] Core::IEditor *EditorManager::currentEditor()

返回当前活动编辑器。

另请参阅currentDocument

[信号] void EditorManager::currentEditorAboutToChange(Core::IEditor *editor)

在当前编辑器改变到 editor 之前,会发出此信号。

[信号] void EditorManager::currentEditorChanged(Core::IEditor *editor)

当前编辑器改变到 editor 之后,会发出此信号。

[静态] void EditorManager::cutForwardNavigationHistory()

剪切导航历史的前一部分,所以用户不能再 前进(直到用户再次向后移动)。

另请参阅goForwardInNavigationHistory() 和 addCurrentPositionToNavigationHistory

[静态] Utils::TextFileFormat::LineTerminationMode EditorManager::defaultLineEnding()

返回用户在设置中指定的默认行结束符。

[静态] QTextCodec *EditorManager::defaultTextCodec()

返回用户在设置中指定的默认文本编码器。

[信号] void EditorManager::documentClosed(Core::IDocument *document)

该信号在文档关闭后发出,但在它被删除之前。

[信号] void EditorManager::documentOpened(Core::IDocument *document)

该信号在编辑视图中打开文档的第一个编辑器后发出。

[信号] void EditorManager::documentStateChanged(Core::IDocument *document)

当文档的元数据(如文件名或修改状态)发生变化时,发出该信号。

另请参阅IDocument::changed

[信号] void EditorManager::editorAboutToClose(Core::IEditor *editor)

在编辑器关闭之前发出该信号。这可以用于释放为编辑器分配的独立资源。它不能用来阻止编辑器关闭。请参阅 addCloseEditorListener() 了解详情。

通常更合适的信号是 documentClosed()。

另请参阅addCloseEditorListener()。

[信号] void EditorManager::editorCreated(Core::IEditor *editor, const Utils::FilePath &filePath)

在为 filePath 中的文件创建编辑器后,但在其打开到编辑器视图中之前,发出该信号。

[信号] void EditorManager::editorOpened(Core::IEditor *editor)

在编辑器视图中打开新的编辑器后,发出该信号。

通常更合适的信号是 documentOpened()。

[信号] void EditorManager::editorsClosed(QList<Core::IEditor *> editors)

当编辑器关闭后(但在它们被删除之前),发出该信号。

通常更合适的信号是 documentClosed()。

[静态] Utils::FilePaths EditorManager::getOpenFilePaths(QFileDialog::Options options = {})

询问用户打开文件列表并返回其选择。

options 参数包含有关如何运行对话框的各种选项。有关可以传递的标志的更多信息,请参阅 QFileDialog::Options 级联。

另请参阅DocumentManager::getOpenFileNames() 和 QFileDialog::Options

[静态槽] void EditorManager::goBackInNavigationHistory()

在导航历史中后退。

另请参阅goForwardInNavigationHistory() 和 addCurrentPositionToNavigationHistory

[静态槽] void EditorManager::goForwardInNavigationHistory()

在导航历史中前进。

另请参阅 goBackInNavigationHistory() 和 addCurrentPositionToNavigationHistory()。

[静态槽] void EditorManager::gotoOtherSplit()

将焦点移动到另一个拆分(如有必要则创建它)。如果没有拆分且没有其他窗口,将创建一个并排拆分。如果当前窗口已拆分,则将焦点移动到该窗口内的下一个拆分,循环移动。如果当前窗口未拆分,则将焦点移动到下一个窗口。

[静态] Core::EditorManager *EditorManager::instance()

返回实例的指针。仅用于连接到信号。

[静态] bool EditorManager::isAutoSaveFile(const QString &filePath)

返回 filePath 是否是 Qt Creator 创建的自动保存文件。

[静态] qint64 EditorManager::maxTextFileSize()

返回应该在天文编辑器中打开的最大文件大小。

[静态] Core::IEditor *EditorManager::openEditor(const Utils::FilePath &filePath, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)

使用指定的 editorIdflags 打开由 filePath 指定的文档。

如果 editorIdId(),则编辑器类型由文件的 MIME 类型派生。

如果 newEditor 不是 nullptr,并且创建了一个新编辑器实例,则将其设置为 true。如果使用现有编辑器实例,则将其设置为 false

另请参阅 openEditorAt()、openEditorWithContents() 和 openExternalEditor()。

[静态] Core::IEditor *EditorManager::openEditorAt(const Utils::Link &link, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)

使用指定的 editorIdflags 打开由 link 指定的文档。

将文本光标移动到 link 中指定的 linecolumn

如果 editorIdId(),则编辑器类型由文件的 MIME 类型派生。

如果 newEditor 不是 nullptr,并且创建了一个新编辑器实例,则将其设置为 true。如果使用现有编辑器实例,则将其设置为 false

另请参阅 openEditor()、openEditorAtSearchResult()、openEditorWithContents()、openExternalEditor() 和 IEditor::gotoLine()。

[静态] void EditorManager::openEditorAtSearchResult(const Utils::SearchResultItem &item, Utils::Id editorId = {}, Core::EditorManager::OpenEditorFlags flags = NoFlags, bool *newEditor = nullptr)

使用编辑器类型 editorId 和指定的 flags 打开搜索结果位置 item 的文档。

如果 editorIdId(),则编辑器类型由文件的 MIME 类型派生。

如果 newEditor 不是 nullptr,并且创建了一个新编辑器实例,则将其设置为 true。如果使用现有编辑器实例,则将其设置为 false

另请参阅 openEditorAt

[静态] Core::IEditor *EditorManager::openEditorWithContents(Utils::Id editorId, QString *titlePattern = nullptr, const QByteArray &contents = QByteArray(), const QString &uniqueId = QString(), Core::EditorManager::OpenEditorFlags flags = NoFlags)

使用指定的 flags 在类型为 editorId 的编辑器中打开 contents

编辑器根据 titlePattern 被赋予一个显示名称。如果指定了非空的 uniqueId 并且找到了具有该唯一 ID 的编辑器,则重用它。否则,创建一个新的具有该唯一 ID 的编辑器。

返回新的或已重用的编辑器。

另请参阅 clearUniqueId

[静态] bool EditorManager::openExternalEditor(const Utils::FilePath &filePath, Utils::Id editorId)

在由 editorId 指定的外部编辑器中打开由 filePath 指定的文档。

如果 editorId 不是外部编辑器的 ID 或无法打开外部编辑器,则返回 false 并显示错误消息。

另请参阅 openEditor

[静态] void EditorManager::populateOpenWithMenu(QMenu *menu, const Utils::FilePath &filePath)

使用适用于打开文档 filePath 的编辑器填充 打开方式 菜单 menu

[静态] Core::IDocument::ReloadSetting EditorManager::reloadSetting()

返回重新加载行为设置。

[静态槽] void EditorManager::revertToSaved()

将当前文档还原到上次保存的状态。

[静态] bool EditorManager::saveDocument(Core::IDocument *document)

保存 document 中的更改。

返回操作是否成功。

[静态槽] void EditorManager::saveDocument()

保存当前文档。

[静态槽] void EditorManager::saveDocumentAs()

将当前文档保存为不同的文件名。

[信号] void EditorManager::saved(Core::IDocument *document)

document被保存后发出此信号。

[静态] void EditorManager::setLastEditLocation(const Core::IEditor *editor)

将最后修改的位置设置为editor。用于窗口 > 转到上次编辑位置

[静态] bool EditorManager::skipOpeningBigTextFile(const Utils::FilePath &filePath)

返回是否应打开由filePath指定的文档,即使它很大。根据设置,这可能需要询问用户是否打开文件。

[静态槽] void EditorManager::splitSideBySide()

将编辑视图水平分割为相邻视图。

[静态] QList<Core::IEditor *> EditorManager::visibleEditors()

返回可见编辑器列表。

©2024 The Qt Company Ltd. 本文档中的贡献包括各自所有者的版权。本提供的文档是在自由软件基金会发布的GNU自由文档许可协议版本1.3的条款下授权的。Qt及其相关标志是芬兰及其它世界各地的The Qt Company Ltd的商标。所有其他商标均属其各自所有者。