class A: public QThread{signals: void sgReadData(int i)protected: void run();private slots: void slUpdateData(int i, int data);private: QList<int> list;}//void A::run(){ while (1) { //перебираем все записи в QList и емиттим сигналы о том что классу А нужно получить новые данные for (int j=0;j<list.size();++j) { emit sgReadData(j); } } }//обновляем данныеvoid A::slUpdateData(int i, int data);{ list[i] = data;}
class B: public QThread{signals: void sgDataReady(int i, int data);protected: void run();private slots: void slReadData(int i);private: List<int> list;}//void B::run(){ /// НАДО ЛИ ЧТО ЗДЕСЬ ПИСАТЬ??? }//void B::slReadData(int i){ emit sgDataReady(int i, list.at(i));}
A *threadA = new(A);B *threadB = new(B);connect(A, SIGNAL(sgReadData(int)), B, SLOT(slReadData(int)));connect(B, SIGNAL(sgDataReady(int,int)), A, SLOT(slUpdateData(int,int)));threadA->start();threadB->start();
void B::run{ exec(); }
CB::~B(){ quit(); wait();}
B::B(...){ connect(this, SIGNAL(finished()), this, SLOT(deleteLater()));}