Есть программа на Qt, реализующая работу с последовательным портом (через библиотеку QSerialPort). Вся работа с портом вынесена в отдельный поток. Суть проблемы: в дочернем потоке в функции run() испускается сигнал, который присоединен к слоту в родительском потоке. В итоге слот не срабатывает.
Родительский поток:
class MainWindow: public QMainWindow {
Q_OBJECT
public:
  MainWindow::MainWindow() {
    thread = new MyThread();
    connect(thread,SIGNAL(datareaded()),this,SLOT(datareaded()));
  }
public slots:
  void datareaded() {
    std::cout << "slot" << std::endl;
  }
private:
  class MyThread *thread;
};
Поток работы с портом:
class MyThread : public QThread {
Q_OBJECT
public:
  MyThread() {}
signals:
  void datareaded();
protected:
  void run() {
    while(1) {
      std::cout << "signal" << std::endl;
      emit datareaded();
    }
  }
};
В итоге выводяться только «signal». Почему? Помогите, пожалуйста.



