http://doc.qt.io/qt-5.9/activeqt-server.html
hierarchy 例子
#ifndef OBJECTS_H
#define OBJECTS_H
#include <QWidget>
QT_BEGIN_NAMESPACE
class QVBoxLayout;
QT_END_NAMESPACE
class QSubWidget;
//! [0]
class QParentWidget : public QWidget
{
Q_OBJECT
Q_CLASSINFO("ClassID", "{d574a747-8016-46db-a07c-b2b4854ee75c}");// html 网页接口,即类接口
Q_CLASSINFO("InterfaceID", "{4a30719d-d9c2-4659-9d16-67378209f822}");
Q_CLASSINFO("EventsID", "{4a30719d-d9c2-4659-9d16-67378209f823}");
public:
QParentWidget(QWidget *parent = 0);
QSize sizeHint() const;
public slots:
void createSubWidget( const QString &name );//导出的方法
QSubWidget *subWidget( const QString &name );//导出的方法
private:
QVBoxLayout *vbox;
};
//! [0]
//! [1]
class QSubWidget : public QWidget
{
Q_OBJECT
Q_PROPERTY( QString label READ label WRITE setLabel )//导出的属性
Q_CLASSINFO("ClassID", "{850652f4-8f71-4f69-b745-bce241ccdc30}");//类接口
Q_CLASSINFO("InterfaceID", "{2d76cc2f-3488-417a-83d6-debff88b3c3f}");
Q_CLASSINFO("ToSuperClass", "QSubWidget");
public:
QSubWidget(QWidget *parent = 0, const QString &name = QString());
void setLabel( const QString &text );
QString label() const;
QSize sizeHint() const;
protected:
void paintEvent( QPaintEvent *e );
private:
QString lbl;
};
//! [1]
#endif // OBJECTS_H
//综上所述
导出属性 使用 Q_PROPERTY 宏
导出方法 使用 公共槽
导出事件 使用 信号