我正在尝试将Python脚本功能添加到我的Qt应用程序中。到目前为止,我已经能够为许多类编写包装器。但是,一个班级有一个虚拟的' init()'必要时可以被派生类覆盖的函数。
// C++ class
class MyClass : public QObject
{
Q_OBJECT
public:
MyClass()
{
init(); // perform user initialization
}
virtual void init() {}
};
MyClass构造函数调用虚函数' init()'。当MyClass被子类化时,如果需要提供用户初始化,则可以覆盖init函数。
我希望使用' MyClass'在PythonQt中,所以我编写了一个包装类:
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>);
现在,我创建了一个Python脚本来使用&#39; MyClass&#39;:
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
问题是print语句(和以下代码)永远不会执行。 PythonQt代码不会覆盖init()函数。