比如说我有一个
QStringList,存放的是一些特定的值,然后循环去网上查到每一个String的
网络信息,再
显示在一个listwidget。
现在是难点是:查的时候因为需要花的时间
比较长,所以如果
没有等所有结果都查出来完的话,再去一次重头查询的时候就会提示:
[size=; font-size: 9pt,9pt]
QThread::start: Thread creation error: 资源暂时不可用[size=; font-size: 9pt,9pt]
请问一下如何解决呢?因为使用了connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(getBillboardInfoFinished(QNetworkReply*)));
所以想把它变为同步的,就是只有这个查询完成后,才能进行下一步操作
- //把所有的Hash加入到list中
- void mainWidget::getBillboardHashFinished(QNetworkReply *reply){
- for(int i=0;i<searchResultCount;i++){
- BillboardHashList.append(value.property("data").property(i).property("hash").toString());
- }
- for(int j=0;j<100;j++){
- getBillboardInfo(BillboardHashList.at(j));
- }
- }
- //分别取每一首歌的信息
- void mainWidget::getBillboardInfo(const QString &hash){
- QNetworkAccessManager *manager = new QNetworkAccessManager(this);
- QNetworkReply *reply = manager->get(QNetworkRequest("http://"+hash));
- connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(getBillboardInfoFinished(QNetworkReply*)));
- }
- //循环处理每一首音乐的信息
- void mainWidget::getBillboardInfoFinished(QNetworkReply *reply){
- QByteArray songJson = reply->readAll();
- musicListWidget->addItem(item);
- }