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 這四種狀態,但有三種圖標: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。