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

相關文章
相關標籤/搜索