我有一个 C++ 类,它定义了一个方法,该方法有一个 sol(指向成员方法的指针)作为参数:
MyClass : public QDialog, private Ui::MyClassBase
{
Q_OBJECT
public:
MyClass( QWidget *parent = nullptr );
void connectValueChanged( const QList<QWidget *> &widgets, void ( MyClass::*slot )() );
}
和
void MyClass::connectValueChanged( const QList<QWidget *> &widgets, void ( MyClass::*slot )() )
{
Q_FOREACH ( QWidget *widget, widgets )
{
connect( w, &QWidget::signal, this, slot );
}
}
connectValueChanged
不能按照 SIP 文件中的定义使用,我收到语法错误。
我也尝试使用const char *slot
没有成功:在SIP文件中
void MyClass::connectValueChanged( const QList<QWidget *> &widgets, const char *slot);
我得到一个错误(no matching function for call to ‘MyClass::connectValueChanged
),因为我想我需要一些MethodCode
来实现这一点。
也许一些提示:
- 现有的 Qt 方法 ,但使用旧的信号/插槽连接。
- SIP 扩展 API也可以。
static QMetaObject::fromSignal
(返回一个QMetaObject
)标题和定义
我应该怎么做才能在 SIP 中定义一个带有插槽作为参数的方法?
我认为这需要一些MethodCode
我目前无法写的东西。我想使用 Qt5 新的信号/插槽连接(避免const char *slot
在 cpp 方法中使用,可能在 python 方法中使用 some MethodCode
)