Signal mit einem Slot einer Klasse verbinden, die nicht von QObject erbt.



  • Moin,

    ich habe in einem QThread Signale, die mit Slots meines MainWindow verbunden sind.

    connect(this, SIGNAL(connected()), myMainWindow_p, SLOT(establishedConnection()));
    connect(this, SIGNAL(disconnected()), myMainWindow_p, SLOT(closedConnection()));
    

    Das funktionier ohne Probleme. Anders herum jedoch nicht.

    connect(actionVia_CAN_Bus, SIGNAL(triggered()), myControl_p, SLOT(establishConnectionCan()));
    connect(actionVia_RS_232, SIGNAL(triggered()), myControl_p, SLOT(establishConnectionRs232()));
    connect(actionDisconnect, SIGNAL(triggered()), myControl_p, SLOT(closeConnection()));
    

    Da bekomme ich folgenden Fehler:

    error C2664: 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)':
    Konvertierung des Parameters 3 von 'Control_C *' in 'const QObject *' nicht möglich
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine
    Typumwandlung im C- oder Funktionsformat.
    

    Klar, klingt logisch. Wie bekomme ich das hin, dass ich dennoch die Slots aus meiner Control_C ansprechen kann?

    Danke im Voraus.

    Edit: Ich habe einfach mal die Anweisung des Compilers befolgt und die Sachen gecasted. Jetzt funktionierts:

    (QObject *)myControl_p


Anmelden zum Antworten