Я подключаю слот с сигналом. Но теперь я хочу временно отключить их.
Вот часть моего объявления класса:
class frmMain : public QWidget
{
...
private:
QTimer *myReadTimer;
...
private slots:
void on_btnDownload_clicked();
...
};
В конструкторе frmMain
я соединяю myReadTimer
со слотом, так что ReadMyCom
будет вызываться каждые 5 секунд:
myReadTimer=new QTimer(this);
myReadTimer->setInterval(5000);
connect(myReadTimer,SIGNAL(timeout()),this,SLOT(ReadMyCom()));
Но в слоте on_btnDownload_clicked
. Я не хочу, чтобы myReadTimer
излучал любой сигнал в области on_btnDownload_clicked
. Поэтому я хочу отключить их в начале on_btnDownload_clicked
и снова подключить их в конце. Вот так:
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
}
Я искал в Stackoverflow и получил некоторый ответ, как вызов деструктора QObject
. Но я не знаю, как его использовать.
Я также попытался использовать disconnect
, например:
QMetaObject::Connection myConnect;
myConnect=connect(myReadTimer,SIGNAL(timeout()),this,SLOT(ReadMyCom()));
...
disconnect(& myConnect);
Но он все еще не работает. Так может ли кто-нибудь помочь мне, как это сделать?