Есть программа на 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». Почему? Помогите, пожалуйста.