La ejecución de QThread congela mi GUI

Soy nuevo en la programación multihilo. Escribí este programa simple de múltiples hilos con Qt. Pero cuando ejecuto este programa, se congela mi GUI y cuando hago clic dentro de mi viuda, responde que su programa no responde. Aquí está mi clase de widget. Mi hilo comienza a contar un número entero y lo emite cuando este número se puede dividir por 1000. En mi widget, simplemente capturo este número con un mecanismo de ranura de señal y lo muestro en una etiqueta y una barra de progreso.

   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);
}

y aquí está mi función de ejecución de hilo ():

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

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta