#include <QtCore>#include <QCoreApplication>#include "ab.h"int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); A *cA = new A(); B *cB = new B(); QObject::connect(cA, SIGNAL(sgFromA(int)), cB, SLOT(slotB(int))); //тут по значению передача данных происходит!!! cA->slotA();//запускаем таймер return app.exec();}
#ifndef AB_H#define AB_H#include <QDebug>#include <QTimer>class A : public QObject{ Q_OBJECTsignals: void sgFromA(int data);public: A() { cnt = 0; }public slots: void slotA() {//выполняем этот слот сами один раз в main qWarning() << "A::slotA() -> GO GO GO"; QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(slotA1())); timer->start(1000); } void slotA1() {//этот слот класса А будет емиттить сигнал с данными для слота В ++cnt; qWarning() << "A::slotA1() -> sended CNT = " << cnt; emit sgFromA(cnt);//здесь передаем ЗНАЧЕНИЕ переменной! }private: int cnt;//типа счетчик};class B: public QObject{ Q_OBJECTpublic slots: void slotB(int data) {//этот слот класса В будет принимать сигнал от класса А с данными qWarning() << "B::slotB() -> received CNT = " << data; }};#endif // AB_H
#include <QtCore>#include <QCoreApplication>#include "ab.h"int main(int argc, char *argv[]){ QCoreApplication app(argc, argv); A *cA = new A(); B *cB = new B(); QObject::connect(cA, SIGNAL(sgFromA(int *)), cB, SLOT(slotB(int *))); cA->slotA();//запускаем таймер return app.exec();}
#ifndef AB_H#define AB_H#include <QDebug>#include <QTimer>class A : public QObject{ Q_OBJECTsignals: void sgFromA(int *data);public: A() { cnt = 0; }public slots: void slotA() {//выполняем этот слот сами один раз в main qWarning() << "A::slotA() -> GO GO GO"; QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(slotA1())); timer->start(1000); } void slotA1() {//этот слот класса А будет емиттить сигнал с данными для слота В ++cnt; qWarning() << "A::slotA1() -> sended CNT = " << cnt; emit sgFromA(&cnt); //здесь передаем АДРЕС переменной! }private: int cnt;//типа счетчик};class B: public QObject{ Q_OBJECTpublic slots: void slotB(int *data) {//этот слот класса В будет принимать сигнал от класса А с данными qWarning() << "B::slotB() -> received CNT = " << *data;// }};#endif // AB_H
signals: void sgFromA(QList<*MyDataTypes> *data);
public slots: void slotB(QList<*MyDataTypes> *data);
QObject::connect(cA, SIGNAL(sgFromA(QList<*MyDataTypes> *)), cB, SLOT(slotB(QList<*MyDataTypes> *));
signals: void sgFromA(MyDataTypes *data);
public slots: void slotB(MyDataTypes *data);
QObject::connect(cA, SIGNAL(sgFromA(MyDataTypes *)), cB, SLOT(slotB(MyDataTypes *));
const
char data[2];
C++ (Qt)connect( SIGNAL(mySignal(int)), this, SLOT(mySlot(int)) );QTime time = QTime::currentTime();for ( int i = 0; i < 1000000; ++i ) emit mySignal( 0 );qDebug() << "Time for one emit: " << (float)time.elapsed()/1000000;...void MyClass::mySlot( int ){ // empty}