{
Q_OBJECT
Q_INTERFACES(WorkStation::core::plugin::Plugin)
public:
TradePlugin();
~TradePlugin();
virtual void Start();
void SetUserInfo(PUSERINFO pUserInfo);
PluginWidgetBase* GetWidget();
private:
};
//WarePlugin派生自该接口
//纯接口
//代表dll在内存中的实例 ,QLoader加载后的返回值
class Plugin
{
public:
virtual ~Plugin();
virtual void Start() = 0;
virtual void SetUserInfo(PUSERINFO pUserInfo) = 0;
virtual PluginWidgetBase* GetWidget()=0;//创建插件中使用的数据库ware.db,然后返回插件的WareMainWidget
};
//将dll加载进内存
QPluginLoader loader(m_strEntrance);
m_pPlugin = qobject_cast<::Plugin *>(loader.instance());//对m_plugin进行赋值
PluginWidgetBase* TradePlugin::GetWidget()
{
return new TradeMainWidget();
}
Q_EXPORT_PLUGIN2("TradePlugin", TradePlugin)
//关键 导出该dll的类型为TradePlugin,这样exe中就能够认识该dll,
loader.instance() 方法返回该dll,