DocumentManager 类
类 Core::DocumentManagerDocumentManager 类管理一组文档。 更多...
头文件 | #include <coreplugin/documentmanager.h> |
继承 | QObject |
公共槽
void | clearRecentFiles() |
静态公共成员
void | addDocument(Core::IDocument *document, bool addWatcher = true) |
void | addDocuments(const QList<Core::IDocument *> &documents, bool addWatcher = true) |
void | addToRecentFiles(const Utils::FilePath &filePath, Utils::Id editorId = {}) |
Utils::FilePath | defaultLocationForNewFiles() |
void | expectFileChange(const Utils::FilePath &filePath) |
Utils::FilePath | fileDialogInitialDirectory() |
Utils::FilePath | fileDialogLastVisitedDirectory() |
Utils::FilePath | filePathKey(const Utils::FilePath &filePath, Core::DocumentManager::ResolveMode resolveMode) |
Utils::FilePaths | getOpenFileNames(const QString &filters, const Utils::FilePath &pathIn = {}, QString *selectedFilter = nullptr, QFileDialog::Options options = {}) |
Utils::FilePath | getSaveAsFileName(const Core::IDocument *document) |
QList<Core::IDocument *> | modifiedDocuments() |
Utils::FilePath | projectsDirectory() |
QList<Core::DocumentManager::RecentFile> | recentFiles() |
bool | removeDocument(Core::IDocument *document) |
void | renamedFile(const Utils::FilePath &from, const Utils::FilePath &to) |
bool | saveAllModifiedDocuments(const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
bool | saveAllModifiedDocumentsSilently(bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
bool | saveModifiedDocument(Core::IDocument *document, const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
bool | saveModifiedDocumentSilently(Core::IDocument *document, bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
bool | saveModifiedDocuments(const QList<Core::IDocument *> &documents, const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
bool | saveModifiedDocumentsSilently(const QList<Core::IDocument *> &documents, bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr) |
void | setDefaultLocationForNewFiles(const Utils::FilePath &location) |
void | setFileDialogLastVisitedDirectory(const Utils::FilePath &directory) |
void | setProjectsDirectory(const Utils::FilePath &directory) |
void | setUseProjectsDirectory(bool useProjectsDirectory) |
void | unexpectFileChange(const Utils::FilePath &filePath) |
bool | useProjectsDirectory() |
详细说明
DocumentManager 服务监视一组 IDocument 对象。
本节使用以下术语
- 文件指存储在磁盘上并带有名称的一组数据(即计算机术语中文件的常规含义)。
- 文档在 Qt Creator 中打开内容。如果它与文件对应,它可能与文件不同,因为已经对其进行了修改。但文档可能根本不对应于文件。例如,diff 查看器文档或 Git 确认或日志记录是由 Qt Creator 请求创建和显示的。
- 编辑器提供用户实际可见的文档视图,并可能允许编辑文档。多个编辑器可以打开同一文档的视图。
插件应在文档管理服务中注册它们处理的文档。《a href="core-idocument.html" translate="no">IDocument 对象指向的文件将在文件系统级别进行监视。如果磁盘上的文件发生变化,将相应调整 IDocument 对象的状态。退出应用程序时,将提醒用户保存所有已修改的文档。
集合中的不同 IDocument 对象可以指向文件系统中的同一文件。可以使用 Core::FileChangeBlocker 类阻止 IDocument 的监视。
expectFileChange()
和 unexpectFileChange()
函数将文件更改标记为预期。在预期的文件更改中,所有 IDocument 对象都会收到通知以重新加载自身。
DocumentManager 服务还提供了保存文档的便利函数,如 saveModifiedDocuments() 和 saveModifiedDocumentsSilently()。它们会向用户提供一个对话框,列出所有已修改的文档,并询问他们希望保存哪个文档。
该服务还管理要显示给用户的最近文件列表。
另请参阅addToRecentFiles() 和 recentFiles()。
成员函数文档
[静态]
void DocumentManager::addDocument(Core::IDocument *document, bool addWatcher = true)
将 document 添加到集合中。如果 addWatcher 为 true
(默认值),则文档的文件将添加到文件系统监视器中,该监视器会通知文档管理器有关文件更改。
[静态]
void DocumentManager::addDocuments(const QList<Core::IDocument *> &documents, bool addWatcher = true)
将一系列 documents 添加到集合中。如果 addWatcher 为 true
(默认值),则文档的文件将被添加到文件系统监视器中,该监视器会通知文档管理器有关文件更改。
[静态方法]
void DocumentManager::addToRecentFiles(const Utils::FilePath &filePath, Utils::Id editorId = {})
将文件路径 filePath 添加到最近文件列表中。如果可能,将待重新打开的文件与指定 editorId 的编辑器关联。默认 editorId 为空 ID,以便 Qt Creator 自动确定最佳编辑器。
[槽函数]
void DocumentManager::clearRecentFiles()
清除最近文件列表。仅在用户选择清除列表时才应由核心插件调用。
[静态方法]
Utils::FilePath DocumentManager::defaultLocationForNewFiles()
返回新文件的默认位置。
相关函数setDefaultLocationForNewFiles() 和 fileDialogInitialDirectory。
[静态方法]
void DocumentManager::expectFileChange(const Utils::FilePath &filePath)
将 filePath 的后续更改视为预期的文件更改。
相关函数unexpectFileChange。
[静态方法]
Utils::FilePath DocumentManager::fileDialogInitialDirectory()
返回新文件对话框的初始目录。如果与文件关联了当前文档,则使用该文档。如果没有默认新文件位置,则使用最后一次访问的目录。
相关函数setFileDialogLastVisitedDirectory 和 setDefaultLocationForNewFiles。
[静态方法]
Utils::FilePath DocumentManager::fileDialogLastVisitedDirectory()
返回文件对话框的上次访问目录。
相关函数setFileDialogLastVisitedDirectory 和 fileDialogInitialDirectory。
[静态方法]
Utils::FilePath DocumentManager::filePathKey(const Utils::FilePath &filePath, Core::DocumentManager::ResolveMode resolveMode)
为 filePath 返回一个保证清洗过的绝对文件路径。如果 resolveMode 是 ResolveLinks,则解析符号链接。
[静态方法]
Utils::FilePaths DocumentManager::getOpenFileNames(const QString &filters, const Utils::FilePath &pathIn = {}, QString *selectedFilter = nullptr, QFileDialog::Options options = {})
提示用户输入一组要打开的文件名。参数 filters 和 selectedFilter 的解释与 QFileDialog::getOpenFileNames() 相同。如果未由用户策略覆盖,pathIn 指定在对话框中打开的路径。
options 参数包含有关如何运行对话框的各种选项。有关可以传递的标志的更多信息,请参阅 QFileDialog::Option 枚举。
[静态]
Utils::FilePath DocumentManager::getSaveAsFileName(const Core::IDocument *document)
提示用户为 document 输入新的文件名(另存为)。
[静态]
QList<Core::IDocument *> DocumentManager::modifiedDocuments()
返回已修改的 IDocument 对象列表。
[静态]
Utils::FilePath DocumentManager::projectsDirectory()
返回项目目录。默认为 HOME。
另见setProjectsDirectory() 和 setUseProjectsDirectory()。
[静态]
QList<Core::DocumentManager::RecentFile> DocumentManager::recentFiles()
返回最近打开的文件列表。
[静态]
bool DocumentManager::removeDocument(Core::IDocument *document)
从集合中移除 document。
如果文档在 addDocument() 中设置了 addWatcher
参数,则返回 true
。
[静态]
void DocumentManager::renamedFile(const Utils::FilePath &from, const Utils::FilePath &to)
通知文档管理器,在 Qt Creator 中已将文件从 from 重命名为 to。
在磁盘上的实际重命名操作后立即调用(即在文件系统监视器可以在下一个事件循环运行期间报告事件之前)。
from 需要是绝对文件路径。这将通过调用 IDocument::setFilePath() 通知指向该文件的所有 IDocument 对象,并通过更新缓存的时间和信息以避免使用户出现“文件已被删除”的弹出窗口。
[静态]
bool DocumentManager::saveAllModifiedDocuments(const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
向用户展示所有已修改的文档的对话框,并询问他们哪些应该保存。
此方法可能向用户显示额外的对话框,例如,如果文件不可写入。
可以使用 message 设置对话框文本。如果用户取消了他们与之交互的任何一个对话框,则 canceled 被设置,方法返回 false
。
alwaysSaveMessage 在对话框中显示一个额外的复选框。如果设置,则该复选框的状态将写入 alwaysSave。
如果传递给该方法,则 failedToClose 返回无法保存的文档列表。
[静态]
bool DocumentManager::saveAllModifiedDocumentsSilently(bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
静默保存所有文档,如果所有修改过的文档都成功保存,则返回 true
。
此方法试图避免向用户显示对话框,但仍然可能这样做(例如,如果文件不可写入)。
如果用户取消了他们与之交互的任何对话框,则 canceled 被设置。如果传递给方法,则 failedToClose 返回无法保存的文档列表。
[静态]
bool DocumentManager::saveModifiedDocument(Core::IDocument *document, const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
向用户展示一个包含 document 的对话框,并询问他们是否应该保存。
此方法可能向用户显示额外的对话框,例如,如果文件不可写入。
可以使用 message 设置对话框文本。如果用户取消了他们与之交互的任何一个对话框,则 canceled 被设置,方法返回 false
。
alwaysSaveMessage 在对话框中显示一个额外的复选框。如果设置,则该复选框的状态将写入 alwaysSave。
如果传递给该方法,则 failedToClose 返回无法保存的文档列表。
[静态]
bool DocumentManager::saveModifiedDocumentSilently(Core::IDocument *document, bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
静默保存 document 并返回 true
如果它已成功保存。
此方法试图避免向用户显示对话框,但仍然可能这样做(例如,如果文件不可写入)。
如果用户取消了他们与之交互的任何对话框,则 canceled 被设置。如果传递给方法,则 failedToClose 返回无法保存的文档列表。
[静态]
bool DocumentManager::saveModifiedDocuments(const QList<Core::IDocument *> &documents, const QString &message = QString(), bool *canceled = nullptr, const QString &alwaysSaveMessage = QString(), bool *alwaysSave = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
向用户显示包含 documents 的对话框,并询问他们哪些应该被保存。
此方法可能向用户显示额外的对话框,例如,如果文件不可写入。
可以使用 message 设置对话框文本。如果用户取消了他们与之交互的任何一个对话框,则 canceled 被设置,方法返回 false
。
alwaysSaveMessage 在对话框中显示一个额外的复选框。如果设置,则该复选框的状态将写入 alwaysSave。
如果传递给该方法,则 failedToClose 返回无法保存的文档列表。
[静态]
bool DocumentManager::saveModifiedDocumentsSilently(const QList<Core::IDocument *> &documents, bool *canceled = nullptr, QList<Core::IDocument *> *failedToClose = nullptr)
静默保存 documents,如果所有文件都成功保存,则返回 true
。
此方法试图避免向用户显示对话框,但仍然可能这样做(例如,如果文件不可写入)。
如果用户取消了他们与之交互的任何对话框,则 canceled 被设置。如果传递给方法,则 failedToClose 返回无法保存的文档列表。
[静态]
void DocumentManager::setDefaultLocationForNewFiles(const Utils::FilePath &location)
设置新文件的默认 位置。
另请参阅defaultLocationForNewFiles。
[静态]
void DocumentManager::setFileDialogLastVisitedDirectory(const Utils::FilePath &directory)
设置文件对话框上次访问的 目录,该目录将在下一次使用时被记住。
另请参阅fileDialogLastVisitedDirectory 和 fileDialogInitialDirectory。
[静态]
void DocumentManager::setProjectsDirectory(const Utils::FilePath &directory)
设置项目的 目录。
另请参阅projectsDirectory 和 useProjectsDirectory。
[静态]
void DocumentManager::setUseProjectsDirectory(bool useProjectsDirectory)
设置是否要使用项目目录的 useProjectsDirectory。
另请参阅projectsDirectory 和 useProjectsDirectory。
[静态]
void DocumentManager::unexpectFileChange(const Utils::FilePath &filePath)
再次将 filePath 的所有更改视为意外。
另请参阅expectFileChange。
[静态]
bool DocumentManager::useProjectsDirectory()
返回是否要使用项目目录,或者用户是否选择使用当前目录。
©2024年Qt公司有限公司提供的文档贡献均为各自所有者的版权。本处提供的文档受免费软件基金会发布的GNU免费文档许可协议第1.3版的条款约束。Qt及其相关标志是芬兰以及全球其他国家的Qt公司注册商标。所有其他商标均为各自所有者的财产。