IPlugin 类
class ExtensionSystem::IPluginIPlugin 类是一个抽象基类,每个插件必须实现一次。更多...
头文件 | #include <extensionsystem/iplugin.h> |
继承 | QObject |
公共类型
枚举 | ShutdownFlag { SynchronousShutdown, AsynchronousShutdown } |
公共函数
virtual ExtensionSystem::IPlugin::ShutdownFlag | aboutToShutdown() |
void | addTestCreator(const ExtensionSystem::TestCreator &creator) |
virtual bool | delayedInitialize() |
virtual void | extensionsInitialized() |
virtual bool | initialize(const QStringList &arguments, QString *errorString) |
virtual QObject * | remoteCommand(const QStringList &options, const QString &workingDirectory, const QStringList &arguments) |
信号
保护函数
virtual void | initialize() |
详细描述
插件需要提供元数据,除了实际的插件库,这样插件管理器才能找到插件、解析其依赖关系并加载它。有关更多信息,请参阅插件元数据。
插件必须提供一个 IPlugin 类的实现,位于与它们元数据中给出的 name
属性匹配的库中。IPlugin 实现必须导出,并使用具有 "org.qt-project.Qt.QtCreatorPlugin"
IID 的 Q_PLUGIN_METADATA
宏,使 Qt 的插件系统知晓。插件生命周期。
更多详细信息,请参阅插件生命周期。
成员类型文档
enum IPlugin::ShutdownFlag
此枚举类型表示插件是否同步或异步关闭。
常量 | 值 | 描述 |
---|---|---|
ExtensionSystem::IPlugin::SynchronousShutdown | 0 | 插件同步关闭。 |
ExtensionSystem::IPlugin::AsynchronousShutdown | 1 | 在关闭前,插件需要执行异步操作。 |
成员函数文档
[虚拟]
ExtensionSystem::IPlugin::ShutdownFlag IPlugin::aboutToShutdown()
在关闭序列期间被调用,顺序与初始化时相同,在插件被删除的逆序中删除。
此函数应用于与其他插件断开连接,隐藏所有用户界面,并在一般情况下优化关闭操作。如果插件需要延迟实际关闭一段时间,例如需要等待外部进程完成以便进行干净的关闭,则插件可以从该函数返回 IPlugin::AsynchronousShutdown。这将保持主事件循环在 aboutToShutdown() 序列完成后继续运行,直到所有请求异步关闭的插件都已发送 asynchronousShutdownFinished() 信号。
此函数的默认实现不执行任何操作,并返回 IPlugin::SynchronousShutdown。
如果插件需要在关闭前执行异步操作,则返回 IPlugin::AsynchronousShutdown。
另请参阅 asynchronousShutdownFinished。
void IPlugin::addTestCreator(const ExtensionSystem::TestCreator &creator)
注册一个函数对象,该对象使用 creator 创建一个测试对象。
创建的对象打算传递给 QTest::qExec。
如果用户以 -test PluginName
或 -test all
启动 Qt Creator,则将调用函数对象。
创建的对象的所有权将转移给插件。
[信号]
void IPlugin::asynchronousShutdownFinished()
在异步关闭已准备好启动关闭序列后,由插件实现发送。
另请参阅 aboutToShutdown。
[虚拟]
bool IPlugin::delayedInitialize()
在所有插件的 extensionsInitialized() 函数调用之后,以及依赖此插件的插件的 delayedInitialize()
函数调用之后调用。
插件的 delayedInitialize()
函数将在应用程序已经启动后调用,与启动有少数毫秒的延迟,并在单个 delayedInitialize()
函数调用之间。为了避免不必要的延迟,如果插件确实实现了该函数,则应从该函数返回 true
,以表示下一个插件的 delayedInitialize()
调用应延迟几毫秒,以便输入和绘制事件有机会被处理。
如果插件需要执行非平凡的设置,但不需要在启动时立即执行,但在一段时间内应该执行,则可以使用此函数。这可以在非常小的努力下大幅降低插件或应用程序的启动时间。
另请参阅 initialize() 和 extensionsInitialized。
[虚拟]
void IPlugin::extensionsInitialized()
在调用 initialize() 函数之后,以及调用依赖于此插件的插件的 initialize() 和 extensionsInitialized()
函数之后调用。
在此函数中,插件可以假设依赖于此插件的插件完全运行动态。这是一个在全局对象池中查找由弱依赖插件提供对象的好地方。
另请参阅 initialize() 和 delayedInitialize。
[虚拟]
bool IPlugin::initialize(const QStringList &arguments, QString *errorString)
在插件加载和 IPlugin 实例创建后被调用。
当此插件的初始化函数被调用时,依赖于此插件的插件的初始化函数将被调用。插件应在该函数中初始化其内部状态。
返回初始化是否成功。如果不成功,应将 errorString 设置为一个用户可读的消息,描述失败的原因。
另请参阅extensionsInitialized() 和 delayedInitialize
[虚拟受保护]
void IPlugin::initialize()
此函数是对 initialize(const QStringList &arguments, QString *errorString)
的默认实现,可以在未使用参数和没有错误需要报告的情况下,覆盖完整的参数版本。
另请参阅extensionsInitialized() 和 delayedInitialize
[虚拟]
QObject *IPlugin::remoteCommand(const QStringList &options, const QString &workingDirectory, const QStringList &arguments)
当带有 -client
参数执行 Qt Creator,而另一个 Qt Creator 实例正在运行时,该插件的功能将在运行实例中被调用。
workingDirectory 参数指定调用进程的工作目录。例如,如果您在一个目录中,并执行 qtcreator -client file.cpp
,调用进程的工作目录将被传递给运行实例,并将 file.cpp
转换为从该目录开始的绝对路径。
特定于插件的自定义参数在 options 中传递,而其余参数在 arguments 中传递。
如果使用了 -block
,则返回一个 QObject,阻止命令直到它被销毁。
©2024 The Qt Company Ltd. 本文档的供款是该文档所有者的版权。本处提供的文档是根据自由软件开发基金会发布的 GNU 自由文档许可证版本 1.3 的条款授权使用的。Qt 和相应的徽标是芬兰的 The Qt Company Ltd 以及全球的商标。所有其他商标均为各自所有者的财产。