2013-11-14 1 views
0

블랙 베리 10 개발에 Qt를 사용하고 있습니다. 나는 QFuture, QtConcurent ::를 사용하고있다. 그래서이 내 코드입니다 :QFuture 다른 스레드에있는 부모를위한 자식을 만들 수 없습니다.

applicationui.cpp

LoadData* Data = new LoadData(url); 
// Invoke our onLoading Finished slot after the loding has finished. 
bool ok = connect(&m_watcher, SIGNAL(finished()),SLOT(onLoadingFinished())); 
Q_ASSERT(ok); 
Q_UNUSED(ok); 

// starts watching the given future 
m_watcher.setFuture(future); 

와 내가 응용 프로그램을 실행할 때 LoadData.cpp에

int LoadData::startLoading() 
{ 
QNetworkAccessManager* netManager = new QNetworkAccessManager(this); 

    const QUrl url(_URL); 
    QNetworkRequest request(url); 

    QNetworkReply* reply = netManager->get(request); 
    bool ok = connect(reply, SIGNAL(finished()), this, SLOT(onReplyFinished())); 
    Q_ASSERT(ok); 
    Q_UNUSED(ok); 
    return 0; 
} 

하지만 이들은에서 오류가 콘솔 :

QObject : Canno 다른 thread에있는 부모의 아이를 작성하지 않습니다. (부모 LoadData (0x82ea9b0), 부모의 thread가, 현재의 thread가 왜이이 문제를 해결하는 방법? 일어나는가 (0x82eac68)

QThread입니다) QThread (0x8082440이다는?

답변

1

먼저 새로 이동입니다 생성 된 개체를 올바른 스레드에 그리고 나서 다시 부모로 만듭니다.