私が持っている簡単なサンプルコードには、開始ボタンと停止ボタン、およびカウンターがあります。startを押すとスレッドが作成され、stopを押すまでカウンターがインクリメントされます。クリックイベントはすべて機能していますが、dialog.cppから呼び出されたときにスレッド自体が開始されず、カウンターが増加することはありません。なぜアイデアはありますか?
コードは、彼がここで行ったのとまったく同じように、この男のチュートリアルからのものであり、彼は次のように機能しました:http ://www.voidrealms.com/viewtutorial.aspx?id=79
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include "mythread.h"
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
    Q_OBJECT
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
    MyThread *mThread;
private:
    Ui::Dialog *ui;
public slots:
    void onNumberChanged(int);
private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    mThread = new MyThread(this);
    connect(mThread,SIGNAL(NumberChanged(int)), this, SLOT(onNumberChanged(int)));
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::onNumberChanged(int Number){
    ui->label->setText(QString::number(Number));
}
void Dialog::on_pushButton_clicked()
{
    mThread->start();
}
void Dialog::on_pushButton_2_clicked()
{
    mThread->Stop = true;
}
mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
class MyThread : public QThread
{
    Q_OBJECT
public:
    explicit MyThread(QObject *parent = 0);
    void run();
    bool Stop;
signals:
    void NumberChanged(int);
public slots:
};
#endif // MYTHREAD_H
mythread.cpp
#include "mythread.h"
#include <QtCore>
MyThread::MyThread(QObject *parent) :
    QThread(parent)
{
}
void MyThread::run() {
    for (int i = 0; i < 100000; i++) {
        QMutex mutex;
        mutex.lock();
        if (this->Stop) break;
        mutex.unlock();
        emit NumberChanged(i);
    }
}
ありがとうございました!