EditorManager 类
class Core::EditorManagerEditorManager 类根据文件的 MIME 类型管理为文件创建的编辑器。<a href="#details">更多...</a>
头部文件 | #include <coreplugin/editormanager/editormanager.h> |
继承 | QObject |
公共类型
枚举 | OpenEditorFlag { NoFlags, DoNotChangeCurrentEditor, IgnoreNavigationHistory, DoNotMakeVisible, OpenInOtherSplit, …, AllowExternalEditor } |
标志 | OpenEditorFlags |
公共槽
bool | closeAllEditors(bool askAboutModifiedEditors = true) |
void | closeOtherDocuments() |
void | goBackInNavigationHistory() |
void | goForwardInNavigationHistory() |
void | gotoOtherSplit() |
void | revertToSaved() |
void | saveDocument() |
void | saveDocumentAs() |
void | splitSideBySide() |
信号
void | aboutToSave(Core::IDocument *document) |
void | autoSaved() |
void | currentDocumentStateChanged() |
void | currentEditorAboutToChange(Core::IEditor *editor) |
void | currentEditorChanged(Core::IEditor *editor) |
void | documentClosed(Core::IDocument *document) |
void | documentOpened(Core::IDocument *document) |
void | documentStateChanged(Core::IDocument *document) |
void | editorAboutToClose(Core::IEditor *editor) |
void | editorCreated(Core::IEditor *editor, const Utils::FilePath &filePath) |
void | editorOpened(Core::IEditor *editor) |
void | editorsClosed(QList<Core::IEditor *> editors) |
void | saved(Core::IDocument *document) |
静态公共成员
void | activateEditor(Core::IEditor *editor, Core::EditorManager::OpenEditorFlags flags = NoFlags) |
Core::IEditor * | activateEditorForDocument(Core::IDocument *document, Core::EditorManager::OpenEditorFlags flags = NoFlags) |
void | activateEditorForEntry(Core::DocumentModel::Entry *entry, Core::EditorManager::OpenEditorFlags flags = NoFlags) |
void | addCloseEditorListener(const std::function<bool (IEditor *)> &listener) |
void | addCurrentPositionToNavigationHistory(const QByteArray &saveState = QByteArray()) |
void | addNativeDirAndOpenWithActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry) |
void | addPinEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry) |
void | addSaveAndCloseEditorActions(QMenu *contextMenu, Core::DocumentModel::Entry *entry, Core::IEditor *editor = nullptr) |
void | clearUniqueId(Core::IDocument *document) |
bool | 关闭所有文档() |
bool | closeDocuments(const QList |
bool | closeDocuments(const QList |
bool | closeEditors(const QList |
void | closeOtherDocuments(Core::IDocument *document) |
Core::IDocument * | 当前文档() |
Core::IEditor * | 当前编辑器() |
void | 剪切前导航历史() |
Utils::TextFileFormat::LineTerminationMode | 默认换行符() |
QTextCodec * | 默认文本编码() |
Utils::FilePaths | getOpenFilePaths(QFileDialog::Options options = {}) |
Core::EditorManager * | 实例() |
bool | isAutoSaveFile(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) |
void | openEditorAtSearchResult(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) |
bool | openExternalEditor(const Utils::FilePath &filePath, Utils::Id editorId) |
void | populateOpenWithMenu(QMenu *menu, const Utils::FilePath &filePath) |
Core::IDocument::ReloadSetting | 重新加载设置() |
bool | saveDocument(Core::IDocument *document) |
void | setLastEditLocation(const Core::IEditor *editor) |
bool | skipOpeningBigTextFile(const Utils::FilePath &filePath) |
QList可见编辑器() | |
详细描述
当用户想要编辑或创建文件时,EditorManager会扫描所有的IEditorFactory接口以找到合适的编辑器。然后所选择的IEditorFactory会被询问创建编辑器,这是根据文件的MIME类型来决定的。
用户可以在同一个屏幕或多个屏幕上同时处理和查看多个文件时,拆分编辑器视图或在新窗口中打开编辑器。更多相关信息,请参阅拆分编辑器视图。
插件使用EditorManager在编辑器中打开文档或关闭它们,并在文档打开、关闭或保存时接收通知。
成员类型文档
enum EditorManager::OpenEditorFlag
flags EditorManager::OpenEditorFlags
此枚举指定在编辑器中打开文件时的设置。
常量 | 值 | 描述 |
---|---|---|
Core::EditorManager::NoFlags | 0 | 不使用任何设置。 |
Core::EditorManager::DoNotChangeCurrentEditor | 1 | 不切换到新打开的编辑器。 |
Core::EditorManager::IgnoreNavigationHistory | 2 | 不向打开的编辑器的导航历史中添加条目。 |
Core::EditorManager::DoNotMakeVisible | 4 | 不会强制编辑器变为可见。 |
Core::EditorManager::OpenInOtherSplit | 8 | 在窗口的另一个分割中打开文档。 |
Core::EditorManager::DoNotSwitchToDesignMode | 16 | 在当前模式打开文档。 |
Core::EditorManager::DoNotSwitchToEditMode | 32 | 在当前模式打开文档。 |
Core::EditorManager::SwitchSplitIfAlreadyVisible | 64 | 如果文档已在其中可见,则切换到另一个分割。 |
Core::EditorManager::DoNotRaise | 128 | 防止将 Qt Creator 窗口置于前台。 |
Core::EditorManager::AllowExternalEditor | 256 | 允许在外部编辑器中打开文件。 |
OpenEditorFlags 类型是 QFlags
成员函数文档
[信号]
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 指定的当前光标位置添加到导航历史记录中。如果 saveState 是 null(默认值),将使用活动编辑器的当前状态。否则,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)
关闭所有打开的编辑器。如果 askAboutModifiedEditors 为 true
,则在关闭编辑器之前提示用户保存更改。
返回是否关闭了所有编辑器。
[静态]
bool EditorManager::closeDocuments(const QList<Core::IDocument *> &documents, bool askAboutModifiedEditors = true)
关闭 documents。如果 askAboutModifiedEditors 为 true
,则在关闭文档之前提示用户保存更改。
返回是否关闭了文档。
[静态]
bool EditorManager::closeDocuments(const QList<Core::DocumentModel::Entry *> &entries)
关闭由 entries 指定的文档。
返回是否关闭了所有文档。
[静态]
bool EditorManager::closeEditors(const QList<Core::IEditor *> &editorsToClose, bool askAboutModifiedEditors = true)
关闭由 editorsToClose 指定的编辑器。如果 askAboutModifiedEditors 为 true
,则在关闭编辑器之前提示用户保存更改。
返回是否关闭了所有编辑器。
通常来说,使用 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)
使用指定的 editorId 和 flags 打开由 filePath 指定的文档。
如果 editorId 为 Id()
,则编辑器类型由文件的 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)
使用指定的 editorId 和 flags 打开由 link 指定的文档。
将文本光标移动到 link 中指定的 line 和 column。
如果 editorId 为 Id()
,则编辑器类型由文件的 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 的文档。
如果 editorId 为 Id()
,则编辑器类型由文件的 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的商标。所有其他商标均属其各自所有者。