예제 #1
0
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();
}
예제 #2
0
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;
}
예제 #3
0
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;
}
예제 #4
0
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);
}
예제 #5
0
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;
}