Łączę gniazdo z sygnałem. Ale teraz chcę je tymczasowo odłączyć.Jak tymczasowo rozłączyć sygnał z gniazdem w Qt?
Tutaj jest częścią mojego deklaracji klasy:
class frmMain : public QWidget
{
...
private:
QTimer *myReadTimer;
...
private slots:
void on_btnDownload_clicked();
...
};
w konstruktorze frmMain
, łączę myReadTimer
z gniazda, tak aby ReadMyCom
będzie wywoływana co 5 sekund:
myReadTimer=new QTimer(this);
myReadTimer->setInterval(5000);
connect(myReadTimer,SIGNAL(timeout()),this,SLOT(ReadMyCom()));
Ale w gnieździe on_btnDownload_clicked
. Nie chcę, aby myReadTimer
emitował dowolny sygnał w zakresie on_btnDownload_clicked
. Dlatego chcę je odłączyć na początku on_btnDownload_clicked
i ponownie podłączyć je na końcu. Tak:
void frmMain::on_btnDownload_clicked()
{
//some method to disconnect the slot & singal
...//the code that I want myReadTimer to leave me alone
//some method to reconnect the slot & singal
}
Szukałem w Stackoverflow i dostaliśmy odpowiedź jak wywołać QObject
destruktora. Ale nie wiem, jak z niego korzystać.
Próbowałem również użyć disconnect
, jak:
QMetaObject::Connection myConnect;
myConnect=connect(myReadTimer,SIGNAL(timeout()),this,SLOT(ReadMyCom()));
...
disconnect(& myConnect);
Ale to nadal nie działa. Czy ktoś może mi pomóc, jak to zrobić?
Czy obejrzysz dokumentacji 'disconnect'? Ma takie same parametry jak "connect". –
Przeczytałem dokument odłączenia i odnalazłem 'static bool disconnect (const QMetaObject :: Connection &); 'Jak więc się myliłem? – ctxrr