//************************ H file***************#include <QtGui>#include <QtDebug>class MainWindow : public QMainWindow{protected: QTime time;};class MyThread : public QThread{Q_OBJECTprivate: int m_nValue; QTime time;public: MyThread() : m_nValue(100){} void run(){ QTimer timer; connect(&timer, SIGNAL(timeout()),SLOT(slotNextValue())); connect(this,SIGNAL(currentValue(int)),this,SLOT(getValue(int))); timer.start(100); exec(); }signals: void finished(); void currentValue(int);public slots: void slotNextValue(){ --m_nValue; qDebug() << "signal Counter= " <<m_nValue<< " time= "<<QTime(time.currentTime()).msec(); emit currentValue(m_nValue); if (!m_nValue) emit finished();//1)не вызывается при перемещении формы,копится в очереди } void getValue (int value){//2)не вызывается при перемещении формы,копится в очереди qDebug() << "slot Counter= " <<value<< " time= "<<QTime(time.currentTime()).msec(); }};//************************ CPP file***************#include <QtGui>#include "thr.h"int main(int argc, char *argv[]) { QApplication app(argc, argv); MainWindow mw; mw.setWindowTitle("Application"); mw.resize(400, 300); MyThread thread; QLCDNumber lcd(&mw); QObject::connect(&thread, SIGNAL(currentValue(int)), &lcd, SLOT(display(int)),Qt::DirectConnection); QObject::connect(&thread, SIGNAL(finished()), &app, SLOT(quit()),Qt::DirectConnection); lcd.setSegmentStyle(QLCDNumber::Filled); lcd.display(100); lcd.resize(220, 90); lcd.show(); thread.start(); mw.show(); return app.exec();}
void run(){ QTimer timer; connect(&timer, SIGNAL(timeout()),SLOT(slotNextValue())); connect(this,SIGNAL(currentValue(int)),this,SLOT(getValue(int))); timer.start(100); exec(); }
connect(&timer, SIGNAL(timeout()),SLOT(slotNextValue()));