Russian Qt Forum
Ноябрь 23, 2024, 03:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: У меня не получается отправить в поток мой класс  (Прочитано 2844 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Июнь 16, 2014, 16:38 »

Здравствуйте!
Прочитал статью, как правильно использовать QThread, но, видимо, что-то упустил.

У меня существует класс MainWidget, который отвечает за прорисовку интерфейса и класс Solver, отвечающий за функционал программы.
В конструкторе первого пишу:
Код:
    thread = new QThread(this);

    connect(thread, SIGNAL(started()), solver, SLOT(run()));
    connect(solver, SIGNAL(finished()), thread, SLOT(terminate()));
    solver->moveToThread(thread);

При нажатии на кнопку вызывается слот:
Код:
void MainWidget::convert()
{
    saveSettings();

    thread->start();
//    QtConcurrent::run(solver, &Solver::run);
}

При такой реализации интерфейс застывает и ждёт, когда solver закончит свою работу.
При реализации QtConcurrent::run(solver, &Solver::run); всё работает прекрасно.
Что я не так делаю? Прошу помощи.
Записан
OKTA
Гость
« Ответ #1 : Июнь 16, 2014, 16:49 »

Покажите кода хоть еще чуть-чуть  Улыбающийся
Solver хотя бы  Улыбающийся
Записан
carrygun
Гость
« Ответ #2 : Июнь 17, 2014, 04:19 »

А как создан экземпляр Solver? Ваш MainWidget не должен быть ему родителем.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Июнь 17, 2014, 08:06 »

А как создан экземпляр Solver? Ваш MainWidget не должен быть ему родителем.
Буду знать. Спасибо. Комментарий помог решить проблему.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.