Execução QThread congela minha GUI

Eu sou novo em programação multithread. Eu escrevi este programa multi thread simples com o Qt. Mas quando eu executo este programa ele congela minha GUI e quando eu clico dentro da minha viúva, ela responde que o seu programa não está respondendo. Aqui está minha classe de widget. Meu thread começa a contar um número inteiro e o emite quando esse número é divisível por 1000. No meu widget simplesmente eu pego esse número com o mecanismo de slot de sinal e o mostro em uma etiqueta e uma barra de progresso.

   Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    MyThread *th = new MyThread;
    connect( th, SIGNAL(num(int)), this, SLOT(setNum(int)));
    th->start();
}


void Widget::setNum(int n)
{
    ui->label->setNum( n);
    ui->progressBar->setValue(n%101);
}

e aqui está minha função thread run ():

void MyThread::run()
{
    for( int i = 0; i < 10000000; i++){
        if( i % 1000 == 0)
            emit num(i);
    }
}

obrigado!

questionAnswers(3)

yourAnswerToTheQuestion