class CPartInfo{public: // Methods & Properties QString PartNo; QString PartQuantity; QString PartAggregateID;};
class CPartInfoWrapper : public QObject { Q_OBJECTpublic slots: // конструктор и деструктор CPartInfo* new_CPartInfo() { return new CPartInfo(); } void delete_CPartInfo(CPartInfo* o) { delete o; } // эмуляторы свойств QString py_get_PartNo(CPartInfo* o) { return o->PartNo; } void py_set_PartNo(CPartInfo* o, QString value) { o->PartNo = value; } QString py_get_PartQuantity(CPartInfo* o) { return o->PartQuantity; } void py_set_PartQuantity(CPartInfo* o, QString value) { o->PartQuantity = value; } QString py_get_PartAggregateID(CPartInfo* o) { return o->PartAggregateID; } void py_set_PartAggregateID(CPartInfo* o, QString value) { o->PartAggregateID = value; }};
// инициализация библиотеки PythonQt PythonQt::init(PythonQt::IgnoreSiteModule | PythonQt::RedirectStdOut); // экземпляр Питона context = PythonQt::self()->getMainModule(); // регистрация прикладных классов PythonQt::self()->registerCPPClass("CPartInfo", "","QtCore", PythonQtCreateObject<CPartInfoWrapper>); ... // импорт всех зарегистрированных классов context.evalScript("from PythonQt.QtCore import *");
CDepartmentalInfo* py_get_DepartmentalInfo(CED101* o) { return &o->DepartmentalInfo; } void py_set_DepartmentalInfo(CED101* o, CDepartmentalInfo value) { o->DepartmentalInfo = value; } CEDRefID* py_get_InitialED(CED101* o) { return &o->InitialED; } void py_set_InitialED(CED101* o, CEDRefID value) { o->InitialED = value; }
>part=CPartInfo()>part.PartNo = '123'>print part.PartNo
// объект CScriptGateway gate; QString gatewayObjName = "gate"; // регистрация в Питоне класса PythonQt::self()->registerClass(&CScriptGateway::staticMetaObject, "QtCore", PythonQtCreateObject<CScriptGateway>); // регистрация объекта context.addObject(gatewayObjName,&gate);
>gate.prop1 = val;>print gate.prop1
C++ (Qt)CPyProject * prj = new CPyProject(); QObject * cls = new QObject();cls->setProperty("prop2", QVariant(1.0)); QVariant var = qVariantFromValue(cls);prj->setProperty("prop1", var); PythonQt::self()->registerClass(&CPyProject::staticMetaObject, "", PythonQtCreateObject<CPyProject>); theModules[0].addObject("prj", prj);
print prj.ptop1.prop2
print prj.prop1.prop2print prj.prop1.value()