xref: /OK3568_Linux_fs/app/forlinx/flapp/src/libs/ui/iwidget.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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)17 Q_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