阅读Qt Creator--PluginDialog 和 PluginView分析

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中使用了PluginView和PluginErrorView。

PluginView效果

转载于:https://my.oschina.net/MichaelBJFU/blog/66308

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值