阅读Qt Creator--PluginDialog 和 PluginView分析

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

这四种状态,但有三种图标:okerrornotloaded

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();

PluginManagerpluginsChanged()信号触发,在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();//PluginManagerpluginsChanged()信号引起该槽

    void selectPlugin(QTreeWidgetItem *current);// QTreeWidget 的currentItemChanged()信号引起该槽

    void activatePlugin(QTreeWidgetItem *item);//QTreeWidget的itemActivated()信号引起该槽

 

 

 

 

 

PluginDialog中使用了PluginViewPluginErrorView

PluginView效果

相关文章
相关标签/搜索