Цитата(borisbn @ 13.2.2012, 14:43 ) | w.moveToThread(&cThread); это убрал ? вообще, покажи весь код (все cpp и h). его там не должно быть много... |
да,убрал
countDown.h
| Код | #ifndef COUNTDOWN_H #define COUNTDOWN_H
#include <QMainWindow> #include <QThread> namespace Ui { class countDown; }
class countDown : public QMainWindow { Q_OBJECT
public: int countMS; // contatore per LED int c; // var per ins. bool work; explicit countDown(QWidget *parent = 0); ~countDown(); //void count(void *p); void doSetup(QThread &cThread); public slots: void start(); void doWork(); void pause(); void stampa();
private: Ui::countDown *ui; };
class Thread : public QThread { Q_OBJECT
signals: void aSignal();
protected: void run() { emit aSignal(); } };
#endif // COUNTDOWN_H
|
countDown.cpp
| Код | #include "countdown.h" #include "ui_countdown.h" #include <windows.h> #include <iostream> #include <process.h> #include <QThread> countDown::countDown(QWidget *parent) : QMainWindow(parent), ui(new Ui::countDown) { ui->setupUi(this); countMS = c = 1000; ui->label->setText(QString::number(countMS)); work = false; connect(ui->bStart,SIGNAL(clicked()),this,SLOT(start())); connect(ui->bPause,SIGNAL(clicked()),this,SLOT(pause())); }
void countDown::start() { work = true; } void countDown::pause() { work = false; } void countDown::stampa() { ui->label->setText(QString::number(countMS)); }
countDown::~countDown() { delete ui; }
void countDown::doSetup(QThread &cThread) { connect(&cThread,SIGNAL(started()),this,SLOT(doWork())); }
void countDown::doWork() { do { if(work) { Sleep(1000); countMS--; } ui->label->setText(QString::number(countMS)); }while(countMS != 0);
}
|
main.cpp
| Код | #include <QtGui/QApplication> #include "countdown.h" #include <QThread> int main(int argc, char *argv[]) { QApplication a(argc, argv); countDown w; w.show(); Thread thread; QObject::connect(&thread, SIGNAL(aSignal()), &w, SLOT(doWork())); thread.start(); return a.exec(); }
|
вообще-то ничего такого |