Witam,
mam prosty program bazujący na tutorialu:
korzystam z c++ MSV, nie piszę tego w qt creator.
Wydaje mi się, że jak się kliknie start u mnie to wszystko działa, jednak aktualny stan liczby powiększanej nie jest przekazywany do label.
Oto kody:
#ifndef WATKI23_H
#define WATKI23_H
#include <QtGui/QMainWindow>
#include "ui_watki23.h"
#include "MyThread.h"
class watki23 : public QMainWindow
{
Q_OBJECT
public:
watki23(QWidget *parent = 0, Qt::WFlags flags = 0);
~watki23();
MyThread *mThread;
private:
Ui::watki23Class ui;
public slots:
void onNumberChange(int number1);
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
};
#endif // WATKI23_H
#include "watki23.h"
#include "ui_watki23.h"
watki23::watki23(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
mThread = new MyThread(this);
connect(mThread, SIGNAL(NumberChange(int)), this, SLOT(onNumberChange(int)));
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
connect(ui.pushButton_2, SIGNAL(clicked()), this, SLOT(on_pushButton_2_clicked(int)));
}
watki23::~watki23()
{
}
void watki23::onNumberChange(int number1)
{
ui.label->setText(QString::number(number1));
}
void watki23::on_pushButton_clicked()
{
mThread->start();
}
void watki23::on_pushButton_2_clicked()
{
mThread->Stop = true;
}
#include <QThread>
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QObject *parent = 0);
~MyThread(void);
void run();
bool Stop;
signals:
void NumberChange(int);
public slots:
};
#include "MyThread.h"
#include <QtCore>
MyThread::MyThread(QObject *parent) : QThread(parent)
{
}
MyThread::~MyThread(void)
{
}
void MyThread::run()
{
for(int i=0; i<10000; i++)
{
QMutex mutex;
mutex.lock();
if(this->Stop) break;
mutex.unlock();
emit NumberChange(i);
}
}
Proszę o pomoc.