Function PythonQt如何重写虚拟函数
我正在尝试将Python脚本功能添加到我的Qt应用程序中。到目前为止,我已经能够为许多类编写包装器。但是,一个类有一个虚拟的“init()”函数,必要时可以由派生类重写该函数Function PythonQt如何重写虚拟函数,function,overriding,virtual,wrapper,python-c-api,Function,Overriding,Virtual,Wrapper,Python C Api,我正在尝试将Python脚本功能添加到我的Qt应用程序中。到目前为止,我已经能够为许多类编写包装器。但是,一个类有一个虚拟的“init()”函数,必要时可以由派生类重写该函数 // C++ class class MyClass : public QObject { Q_OBJECT public: MyClass() { init(); // perform user initialization } virtual void init() {} }; MyCl
// C++ class
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass()
{
init(); // perform user initialization
}
virtual void init() {}
};
MyClass构造函数调用虚拟函数“init()”。当MyClass是子类时,如果需要提供用户初始化,可以重写init函数
我希望在PythonQt中使用“MyClass”,因此我编写了一个包装类:
class MyClass_Wrapper : public QObject
{
Q_OBJECT
public Q_SLOTS:
// add a constructor
MyClass* new_MyClass() {return new MyClass(); }
void init(MyClass* mc) { mc->init(); }
};
类“MyClass”现在已在PythonQt中注册:
PythonQt::self()->registerCPPClass("MyClass",NULL,"myModule", PythonQtCreateObject<MyClass_Wrapper>);
问题是print语句(以及下面的代码)从未执行过。PythonQt代码未重写init()函数 解决方案是使用PythonQt gerator应用程序创建包装器。这里有更多关于这方面的信息:
import myModule
Class TestClass(MyClass) :
def init(self):
# init() is called exactly once at the beginning to do
# any necessary configuration.
print "Inside init(self)"
.
.
.
return