Доброго времени суток!
Не могу найти свои грабли. Суть вот в чем:
есть класс
class ModemService :public QThread{
Q_OBJECT
public:
void run();
ModemService(QObject *parent);
public slots:
void WriteModem(QString Message);
...
signals:
void ReadModemData(QString DataString);
...
private:
...
};
Экземпляр этого класса создается динамически вот так вот:
MS = new ModemService(this);
Далее коннектим сигналы со слотами:
connect(MS,SIGNAL(ReadModemData(QString )),this,SLOT(GetFromModem(QString )),Qt::QueuedConnection);
connect(this,SIGNAL(SendToModem(QString )),MS,SLOT(WriteModem(QString )),Qt::QueuedConnection);
connect(MS, SIGNAL(finished()), MS, SLOT(deleteLater()),Qt::QueuedConnection);
а затем
что в теории должно вызвать вот этот метод
void ModemService::run(){
exec();
}
По теории - все. создали объект, зацепили сигналы со слотами, и вызвали run(). У нас есть поток, и мы можем с ним работать с помощью сигналов.
Поток действительно создается, сигналы работают. Только вот при зависании этого потока виснет всё приложение. Даже если сделать внутри любого слота потока вызов метода sleep(TimeVal) а затем послать ему соответствующий сигнал, на TimeVal замрет всё приложение, а не один только поток.
Никак не могу заметить в чем я не прав. Хелп плиз...