PluginView是插件管理器中所管理插件的可视化的查看类,派生自QWidget,可以作为任何QWidget的子类的子窗口。
方法列表及说明:
成员方法 |
说明 |
PluginSpec *currentPlugin() const |
QTreeWidgetItem中的UserRole里存放着相应的PluginSpec, 在parsePluginSpecs()中可以看到 |
QIcon iconForState(int state) |
根据state所指插件状态返回一个Qicon ParsedNone = 1, 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。
来源:oschina
链接:https://my.oschina.net/u/247612/blog/66308