void BrowsePicture::AutoMergeButtonClicked() { pic_path = ui.dir_edit->text(); if(!ReadFile(pic_path)) { return; } clearDir(pic_path); MyAutoMergeThread *automerge = new MyAutoMergeThread; automerge->setArg(arg); automerge->setPath(pic_path); connect(automerge,SIGNAL(done()),this,SLOT(doneSuccess())); connect(automerge,SIGNAL(fail()),this,SLOT(doneFail())); connect(automerge,SIGNAL(showpic(QString)),this,SLOT(ShowDonePicture(QString))); connect(automerge,SIGNAL(showDoingPic(QString)),this,SLOT(ShowThumbnail(QString))); Progress *dlg = new Progress; dlg->setFlag(1); dlg->setPathName(pic_path); dlg->setArg(arg); dlg->setProgressMax(); dlg->setAutoMergeThread(automerge); dlg->show(); connect(automerge,SIGNAL(done()),dlg,SLOT(closeDlg())); automergethread_list.append(automerge); automergeprogress_list.append(dlg); automerge->start(); }
bool MyMergeThread::mergePicByCondition_ThirdMethod(const SPLIT &m_split) { if(arg.getSplit_Pic() == 1) { if(mergePicByCondition_Split(m_split)) { if(arg.getGray_Pic() == 1) { if(mergePicByCondition_gray(m_split)) { if(arg.getRgb_Pic() == 1) { if(mergePicByCondition_rgb(m_split)) { //emit showpic(pic_path); //emit done(); } } } }else if(arg.getRgb_Pic() == 1) { if(mergePicByCondition_rgb(m_split)) { //emit showpic(pic_path); //emit done(); } } } }else { if(arg.getGray_Pic() == 1) { if(mergePicByCondition_gray(m_split)) { if(arg.getRgb_Pic() == 1) { if(mergePicByCondition_rgb(m_split)) { //emit showpic(pic_path); //emit done(); } } } }else if(arg.getRgb_Pic() == 1) { if(mergePicByCondition_rgb(m_split)) { //emit showpic(pic_path); //emit done(); } } } emit showpic(pic_path); emit done(); return true; }
int MySplitLevelTwoThread::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QThread::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: done(); break; case 1: fail(); break; case 2: showpic((*reinterpret_cast< QString(*)>(_a[1]))); break; case 3: showDoingPic((*reinterpret_cast< QString(*)>(_a[1]))); break; default: ; } _id -= 4; } return _id; }
void BrowsePicture::splitPic(QString filename,const SPLITArg &arg) { MySplitThread *split = new MySplitThread; connect(split,SIGNAL(done()),this,SLOT(doneSuccess())); connect(split,SIGNAL(fail()),this,SLOT(doneFail())); connect(split,SIGNAL(showpic(QString)),this,SLOT(ShowDonePicture(QString))); connect(split,SIGNAL(showDoingPic(QString)),this,SLOT(ShowThumbnail(QString))); split->setPath(filename); split->setArg(arg); Progress *dlg = new Progress; dlg->setFlag(0); dlg->setPathName(filename); dlg->setArg(arg); dlg->setProgressMax();//设置进度条最大值 dlg->setSplitThread(split);//为了在进度条取消或关闭时终止线程 并释放空间 dlg->show(); connect(split,SIGNAL(done()),dlg,SLOT(closeDlg())); split->start(); splitthread_list.append(split); splitprogress_list.append(dlg); }
void BrowsePicture::ShowImage() { MyMergeThread *merge = new MyMergeThread; merge->setArg(arg); merge->setPath(pic_path); setMergeThread(merge); Progress *dlg = new Progress; dlg->setFlag(2); dlg->setPathName(pic_path); dlg->setMergeArg(merge->getMergeArg()); dlg->setArg(arg); dlg->setProgressMax(); dlg->setMergeThread(merge);//为了在进度条取消或关闭时终止线程 并释放空间 dlg->show(); connect(merge,SIGNAL(done()),this,SLOT(doneSuccess())); connect(merge,SIGNAL(fail()),this,SLOT(doneFail())); connect(merge,SIGNAL(showpic(QString)),this,SLOT(ShowDonePicture(QString))); connect(merge,SIGNAL(showDoingPic(QString)),this,SLOT(ShowThumbnail(QString))); connect(merge,SIGNAL(done()),dlg,SLOT(closeDlg())); merge->start(); mergethread_list.append(merge); mergeprogress_list.append(dlg); }
int main() { showpic(); system("pause"); return 0; }