1 /* 显示插件的基类,显示插件必须继承此类. 2 */ 3 #ifndef IWIDGET_H 4 #define IWIDGET_H 5 #include <QWidget> 6 #include "iplugin.h" 7 #include <processhandler.h> 8 #include <QDomElement> 9 #include <QDomNode> 10 #include <QProcess> 11 #include <QLoggingCategory> 12 #include <QHBoxLayout> 13 #include "ui_global.h" 14 15 class QProcess; 16 class IWidgetBridge; Q_DECLARE_LOGGING_CATEGORY(flapp)17Q_DECLARE_LOGGING_CATEGORY(flapp) 18 19 class UI_LIBRARY IWidget : 20 public QWidget, 21 public IPlugin, 22 public ProcessHandler 23 { 24 public: 25 IWidget(QWidget *parent=NULL); 26 27 virtual ~IWidget(); 28 virtual void loadData(const QDomElement &head, const QDomElement &body); 29 virtual void initUi(); 30 virtual void processMessage(const QString &info) override ; 31 IWidgetBridge* bridgt() const; 32 void setBrigde(IWidgetBridge* bridge); 33 private: 34 QProcess *m_process; 35 IWidgetBridge *m_bridge; 36 }; 37 38 /*用于快速创建插件接口*/ 39 #define CreateSimplePlugin(classA, key, name, widget)\ 40 class classA: public IWidget \ 41 {\ 42 Q_OBJECT Q_PLUGIN_METADATA(IID PLUGIN_INTERFACE_iid FILE name)\ 43 public: \ 44 classA(QWidget *parent=NULL):IWidget(parent){QHBoxLayout*hLayoyt=new QHBoxLayout(this); hLayoyt->addWidget(widget);}\ 45 QString id(){return key;}\ 46 }; 47 48 49 #endif // IWIDGET_H 50