Bonjour,

J'ai une classe A principale qui appel une méthode de la classe B, cette méthode de la classe B est un slot,
mais dans dans cette methode sLOT, je voudrais appeler une methode de la classe A.

Methode de la classe A que je doit appelé: la classe A s'appele Dialog c'est l'application principale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
bool Dialog::isMenuChecked(const QString &actionName)
{
    bool checked;
    QAction *action = findChild<QAction *>(actionName);
 
    checked = false;
 
    if(action)
    {
        if(actionName == action->objectName())
            checked = action->isChecked();
        qDebug() << tr("actionname: %1 objectname: %2").arg(actionName).arg(action->isChecked());
    }
 
    return checked;
}
quand je l'appelle a partir de la classe Dialog elle fontionne parfaitement.

Methode slot de la classe B(MyServer) qui doit appele isMenuCheck qui se trouve dans la classe A(Dialog).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
void MyServer::handleSlotResponse(const QString text, QColor color)
{
    if(qte_resp)
    {
       Dialog *d = qobject_cast<Dialog *>(pParent);
 
        if(d->isMenuChecked("hideresp") == false)
        {
            qDebug() << "ok";
            qte_resp->setTextColor(color);
            qte_resp->append(text);
        }
    }
}
La methode est bien appelé mais la variable QAction action de la methode isMenuCheck est a null, alors que ca fonctionne lorsqu'elle est appelée directement à partir de la classe Dialog.
QAction *action = findChild<QAction *>(actionName);

j'ai essaye via la declaration statique de isMenuCheck mais ca ne marche pas car j'utilise l'objet QAction dans cette methode.


Avez vous une idée ?

Merci de votre aide.