#ifndef AL_H#define AL_H#include <QTime>#include <QDebug>#define LIMIT 4000000class TMyClass : public QObject{ Q_OBJECTsignals: void mySignal(int data);public: TMyClass() { cnt = 0; srcData = 0; dstData = 0; connect( this, SIGNAL(mySignal(int)), this, SLOT(mySlot(int)) ); } void myStart() { srcData = 333;//в переменную пишем число 333 time = QTime::currentTime();//получаем текущее время до старта for ( int i = 0; i < LIMIT; ++i ) {// LIMIT раз емиттим сигнал с данными ++cnt;//счетчик кол-ва итераций emit mySignal( srcData ); } }private slots: void mySlot(int data) { dstData = data;//копируем в переменную dstData содержимое переменной data if (cnt == LIMIT) qDebug() << "Time for one cicle ~ " << (float)time.elapsed()/LIMIT;//получаем среднее время цикла обработки //qDebug() << "data = " << dstData; }private: QTime time; int cnt; int srcData; int dstData;};#endif // AL_H
#include <QtCore>#include <QCoreApplication>#include "al.h"int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); TMyClass *MyClass = new TMyClass(); MyClass->myStart(); return a.exec();}
void MyClass::MyFunc(){ TMyData MyData; ... ... emit (&MyData);}
void MyClass::MyFunc(){ TMyData *MyData = new TMyData; ... ... emit (MyData);}
C++ (Qt)void MyClass::MyFunc(){ TMyData data; emit request( data ); // Обработали данные if( data.var1 == 1234 ) .... // data - разрушился, ибо нефик.} void MyLister::request( MyData &data ){ // Заполнили поля структуры data.var1 = 1234; data.var2 = 5678;}