PluginView是插件管理器中所管理插件的可视化的查看类,派生自QWidget,能够做为任何QWidget的子类的子窗口。函数
方法列表及说明:ui
成员方法this |
说明spa |
PluginSpec *currentPlugin() const插件 |
QTreeWidgetItem中的UserRole里存放着相应的PluginSpec,排序 在parsePluginSpecs()中能够看到ci |
QIcon iconForState(int state)get |
根据state所指插件状态返回一个Qiconit ParsedNone = 1,io ParsedPartial = 2, ParsedAll = 4, ParsedWithErrors = 8 这四种状态,但有三种图标:ok,error,notloaded |
int parsePluginSpecs( QTreeWidgetItem *parentItem, Qt::CheckState &groupState, QList<PluginSpec*> plugins); |
@return 指定插件组(插架有不一样的分类好比专门解析C++的插架为一组,一种类型为一组)的状态。 @parameters @parentItem(in) 记录这一组的信息(这里只有插件组的名称,其余信息为空,仅仅为了属性空间留下其余空位) @groupState(out) 输出插件组的状态(checked, unchecked, partiallyChecked) @plugins(in) 该插件组中的全部插件 |
void updatePluginDependencies(); |
根据依赖关系修改列表状态 |
void updatePluginSettings(QTreeWidgetItem *item, int column); |
该函数不会在一次没有执行完以前不能再执行这个函数 |
void updateList(); |
由PluginManager的pluginsChanged()信号触发,在PluginView的构造函数中也会调用updateList()一次。 在这个函数中有一个疑问,也就是在进入函数就进行一次槽的连接,但是这样若是屡次连接的话,发生一次信号会发生屡次调用updateList(),这里有待实践中联系。 connect(m_ui->categoryWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(updatePluginSettings(QTreeWidgetItem*,int)));
该函数更新列表,同时还会对树形控件根据名称进行排序。
|
signals:
void currentPluginChanged(ExtensionSystem::PluginSpec *spec);
void pluginActivated(ExtensionSystem::PluginSpec *spec);
void pluginSettingsChanged(ExtensionSystem::PluginSpec *spec);
private slots:
void updatePluginSettings(QTreeWidgetItem *item, int column);//itemChanged()信号引起该槽
void updateList();//PluginManager的pluginsChanged()信号引起该槽
void selectPlugin(QTreeWidgetItem *current);// QTreeWidget 的currentItemChanged()信号引起该槽
void activatePlugin(QTreeWidgetItem *item);//QTreeWidget的itemActivated()信号引起该槽
PluginDialog中使用了PluginView和PluginErrorView。