MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); connect(&this->test,SIGNAL(updateState(QString)),this,SLOT(updateStatus(QString))); connect(&this->test,SIGNAL(workFinish(QList<QString>)),this,SLOT(on_finished(QList<QString>))); }
void ExportWizard::exportData(QSqlDatabase &source, QSqlDatabase &target) { setOptions(QWizard::DisabledBackButtonOnLastPage); button(QWizard::FinishButton)->setEnabled(false); QStringList tableNameList = exportInfo->getUseTableList(); workThread = new ExportWorkThread(source, tableNameList, target); connect(workThread, SIGNAL(finished()), this, SLOT(workFinish())); connect(workThread, SIGNAL(finishPos(int)), this, SLOT(setProgress(int))); exportFinishInfo->progressBar->setMaximum(tableNameList.size()); workThread->start(); }
void AbstractReptile::handleReply(QNetworkReply *reply) { if(reply->error()!=QNetworkReply::NoError)//请求错误 { if(!this->data.isEmpty()) this->save(); emit requestError(QString("reply error:")+reply->errorString()); if(this->replyError()) { return; } } this->replyData=reply->readAll(); reply->deleteLater(); QString text=QString::fromUtf8(this->replyData); //-----------------解析网页,获得数据-------------------- emit this->updateState(QString("update:request text from ")+this->currentUrl.url()); int initCount=this->data.size(); if(this->analysisData.isEmpty()) { this->getData(text,this->data); } else { QRegExp reg=this->analysisData; int pos = 0; int count=0; while ((pos = reg.indexIn(text, pos)) != -1) { QString line=reg.cap(0); if(!line.isEmpty()) { this->data.insert(line,0); } count++; pos += reg.matchedLength(); } } if(data.size()<=initCount) { emit getDataError(QString("none data capture.")); if(analysisDataError()) { return; } } emit this->updateState(QString("update:get data ")+QString::number(data.size()-initCount)); //-----------------解析网页,获得下一个网址--------------- this->allUrl.insert(this->currentUrl.url(),-1); if(this->analysisNextUrl.isEmpty()) { this->getNextUrl(text,this->currentUrl); } else { QRegExp reg=this->analysisNextUrl; int pos = 0; if((pos = reg.indexIn(text, pos)) != -1) { QString line=reg.cap(0); if(!line.isEmpty()) { this->currentUrl=this->captureToUrl(line,this->currentUrl); } else { this->currentUrl=QUrl(); } } } if(currentUrl.isEmpty()) { emit getDataError(QString("none data capture.")); if(analysisDataError()) { return; } } emit this->updateState(QString("update:get next url ")+this->currentUrl.url()); //-----------------验证终止----------------------------- if(finishWork(text)) { emit this->updateState(QString("update:finish at finishWork()")); emit workFinish(this->data.keys()); return; this->save(); } if(allUrl.find(this->currentUrl.url())!=allUrl.end()) { emit this->updateState(QString("update:finish : same url")); emit workFinish(this->data.keys()); return; this->save(); } if(this->currentUrl.isEmpty()) { emit this->updateState(QString("update:finish empty url")); this->save(); return; } //----------------开始下一个网页------------------------- emit this->updateState(QString("update:request url ")+this->currentUrl.url()); this->manager->get(QNetworkRequest(this->currentUrl)); }