а ещё странная вещь...
вот метод ран
void test::run()
{ bool fl=false;
int grad =0;
bool t3 = false;
fl=test::tempiratura_datchika(tna_,file_name_,nms_,ftHandle1_,serial_);
if (fl == true)
{ grad = test::Start_test(tk_,file_name_,nms_,ftHandle1_,serial_,time_okonch_);
if (grad>=tk_-0.5)
{
t3 = test::time_test_2(time_okonch_,file_name_,ftHandle1_,serial_,t3);
if (t3==true)
{
emit win(serial_);
}
else
{
emit fail2(serial_);
}
}
else
{
emit fail1(serial_);
}
}
else
{
emit fail1(serial_);
}
}
когда прога доходит до emit win(serial_); она следующим шагом перепрыгивает emit fail1(serial_); при условии что создан только 1 поток и она ну ни как не может быть переведена туда.
коннекты выглядят теперь так
bool a;
a = connect (this,SIGNAL(signal_sn(const QString &)),this,SLOT(end_test(const QString &)));
a = connect (this,SIGNAL(signal_error(const QString &)),this,SLOT(error_test(const QString &)));
a = connect(te, SIGNAL(win(const QString &)),this,SLOT(mysignal_win(const QString &)));
a = connect(te, SIGNAL(fail1(const QString &)),this,SLOT(mysignal_fail1(const QString &)));
a = connect(te, SIGNAL(fail2(const QString &)),this,SLOT(mysignal_fail2(const QString &)));