QThread-Ausführung friert meine GUI ein
Ich bin neu in der Multithread-Programmierung. Ich habe dieses einfache Multi-Thread-Programm mit Qt geschrieben. Aber wenn ich dieses Programm ausführe, friert es meine GUI ein und wenn ich in meine Witwe klicke, antwortet es, dass Ihr Programm nicht reagiert. Hier ist meine Widget-Klasse. Mein Thread beginnt eine ganze Zahl zu zählen und gibt sie aus, wenn diese Zahl durch 1000 teilbar ist. In meinem Widget fange ich diese Zahl einfach mit einem Signal-Slot-Mechanismus ab und zeige sie in einem Label und einer Fortschrittsanzeige.
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);
}
und hier ist meine thread run () Funktion:
void MyThread::run()
{
for( int i = 0; i < 10000000; i++){
if( i % 1000 == 0)
emit num(i);
}
}
Vielen Dank!