Iは、引数としてゾル(メンバメソッドへのポインタ)を有する方法で定義されたC++クラスを持っている:スロット(メソッド部材へのポインタ)メソッドへの引数としてSIP
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);
私はこれを達成するために、いくつかのMethodCode
を必要として、私はエラー(no matching function for call to ‘MyClass::connectValueChanged
)を取得します。
たぶん、いくつかのヒント:
- existing Qt method が、古いシグナル/スロット接続を使用。
- SIP extension APIでもある。
static QMetaObject::fromSignal
(帰国QMetaObject
)headerとdefinition
私はSIPでの引数としてスロットを持つメソッドを定義するにはどうすればいいの?
私はこれがいくつか必要だと思う。MethodCode
私は現時点では書くことができません。 私は私はありませんので、私は、ポインタ・ツー・メンバーを削除した
?どのように 'connectValueChanged'を呼びますか? – Svalorzen
私はちょうどそのエラーで質問を更新しました。 –
関数を呼び出す場所の実際のコードを表示できますか? – Svalorzen