Есть следующее (псевдо-код):КодCclass RequestMaker: public QObject{ Q_OBJECT private: QNetworkAccessManager mgr_; public: RequestMaker(QObject* parent) : QObject(parent), mgr_(this) { connect(&mgr_, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkReplyReceived(QNetworkReply* ))); } void sendRequest(...) { // compose request mgr_.post(...); } public signals: void responseReceived(Response*); private slots: void networkReplyReceived(QNetworkReply* reply) { // convert reply to a special struct Response* resp = ResponseMaker::make(reply); emit responseReceived(resp); reply->deleteLater(); }};Данный класс используется в MainWindow: public QMainWindow, устанавливая слот на responseReceived(). Выполняет sendRequest() и в слоте responseReceived() делает widget.update(). После чего seg. fault.Подозреваю, что слот выполняет в другом треде, и из-за этого такое поведение. Как заставить нормально отрабатывать данный сценарий с данным кодом? Может в каком-то месте надо сделать moveToThread() ?Спасибо.
|