j'ai une classe C++ défini avec un procédé qui présente un sol (pointeur de méthode de membre) comme argument:fente (pointeur à l'élément de procédé) comme argument de la méthode dans SIP
MyClass : public QDialog, private Ui::MyClassBase
{
Q_OBJECT
public:
MyClass(QWidget *parent = nullptr);
void connectValueChanged(const QList<QWidget *> &widgets, void (MyClass::*slot)());
}
et
void MyClass::connectValueChanged(const QList<QWidget *> &widgets, void (MyClass::*slot)())
{
Q_FOREACH (QWidget *widget, widgets)
{
connect(w, &QWidget::signal, this, slot);
}
}
le connectValueChanged
ne peut pas être utilisé comme défini dans le fichier SIP, je reçois un erreur de syntaxe.
J'ai aussi essayé d'utiliser const char *slot
sans succès: Dans le fichier SIP
void MyClass::connectValueChanged(const QList<QWidget *> &widgets, const char *slot);
Je reçois une erreur (no matching function for call to ‘MyClass::connectValueChanged
) que je suppose que je besoin d'MethodCode
pour y parvenir.
Peut-être quelques conseils:
- existing Qt method mais en utilisant l'ancienne connexion signal/fente.
- SIP extension API soit.
static QMetaObject::fromSignal
(retour d'unQMetaObject
) header et definition
Que dois-je faire pour définir une méthode avec une fente comme argument dans SIP?
Je pense que cela nécessite quelques MethodCode
Je ne suis pas capable d'écrire pour le moment. Je voudrais utiliser une nouvelle connexion signal/fente QT5 (évitez d'utiliser const char *slot
dans la méthode cpp, mettre éventuellement dans la méthode python avec quelques MethodCode
)
Quelle est l'erreur que vous obtenez? Comment appelez-vous 'connectValueChanged'? – Svalorzen
Je viens de mettre à jour la question avec l'erreur. –
Pouvez-vous montrer la partie du code où vous appelez la fonction? – Svalorzen