Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Qthread scambio segnali attraverso mainwindows



  • Una questione non risolta:

    ho due Qthread che vengono messi in start uno all'avvio del mainwindows e l'altro da una funzione chiamata da mainwindows .... dovrebbero scambiare segnali tra loro. Fino ad ora ho sempre usato il sistema "connect-signal-slot" e viceversa una volta dal qthread1 ad una funzione appoggio del mainwindows e poi da quella al qthread2 ..... se tento di scambiare segnali diretti tra qthread1 e qthread2 qtcreator m ritorna il messaggio di errore per slot non esistente es: connect(qthread1, SIGNAL(xxx), qthread2, SLOT(XXX)), Qt:queueconnection); mi ritorna qthread2::SLOT(XXX) non eistente ..... perchè i due qthread esistono nel mainwindows e non in altri ambienti io credo ..... se invece uso il solito sistema es: connect((qthread1, SIGNAL(xxx), this, SLOT(consegnale-xxxx)), Qt::queueconnection); ... e poi in altro punto del main ... connect((this, SLOT(consegnale-xxxx), qthread2, SLOT(riceve-segnale-xxxx)), Qt::queueconnection); .... tutto funziona perfettamente.

    chiedo se è possibile una connessione diretta tenendo presente che i due qthread devono per forza partire in momenti diversi e non collegati tra loro.

    - SOLUZIONE -***********

    la soluzione è già pronta è possibile usare il sistema CONNECT SIGNAL SLOT con qualsiasi tipo di Qthread sia per via diretta che indiretta come facevo io. L'errore che ottenevo dipendeva dal fatto che la funzione segnale era dichiarata malamente nel file .h, ovvero descrivendo le 9 variabili tra una e l'altra ho inserito per errore degli spazi che poi non ho messo anche quando la richiamata con CONNECT .... così correttamente la compilazione mi diceva che non eisteva.

    Per altro ho "scoperto" l'errore solo perchè ad altro utente era successo ... quindi ho controllato.


Log in to reply