阅读Qt Creator--PluginDialog 和 PluginView分析

旧城冷巷雨未停 提交于 2020-04-07 07:29:42

PluginView是插件管理器中所管理插件的可视化的查看类,派生自QWidget,可以作为任何QWidget的子类的子窗口。

方法列表及说明:

 

成员方法

说明

PluginSpec *currentPlugin() const

QTreeWidgetItem中的UserRole里存放着相应的PluginSpec,

    在parsePluginSpecs()中可以看到

QIcon iconForState(int state)

根据state所指插件状态返回一个Qicon

ParsedNone = 1,

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效果

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!