#include "dialogpic.h" #include "ui_dialogpic.h" #include "mainwindow.h" extern iv::vision::rawpic grawpic[CAMERA_NUM]; extern qint64 gTimeRawPic[CAMERA_NUM] ; extern QMutex gMutexPic[CAMERA_NUM]; DialogPic::DialogPic(QWidget *parent) : QDialog(parent), ui(new Ui::DialogPic) { ui->setupUi(this); int i; for(i=0;i<4;i++) { mpview[i] = new MyView(this); mpview[i]->setObjectName(QStringLiteral("graphicsView")); mpview[i]->setGeometry(QRect(30, 30, 600, 600)); mpview[i]->setCacheMode(mpview[i]->CacheBackground); mscene[i] = new QGraphicsScene; mpPicView[i] = new IVPicView(); mpPicView[i]->start(); mnLastPicTime[i] = 0; mbDraw[i] = false; } QTimer * timer = new QTimer(); connect(timer,SIGNAL(timeout()),this,SLOT(onTimerPic())); timer->start(10); setWindowTitle("View All Picture"); } DialogPic::~DialogPic() { qDebug("delete dialog"); delete ui; } void DialogPic::resizeEvent(QResizeEvent *event) { (void)event; QRect rect = this->geometry(); double fwidth = rect.width()/2; double fheight = rect.height()/2; mpview[0]->setGeometry(0,0,fwidth,fheight); mpview[1]->setGeometry(fwidth,0,fwidth,fheight); mpview[2]->setGeometry(0,fheight,fwidth,fheight); mpview[3]->setGeometry(fwidth,fheight,fwidth,fheight); // rect.setX(rect.x()); } void DialogPic::onTimerPic() { int i; if(mbRefresh == false)return; bool bUpdate = false; for(i=0;i<4;i++) { if(mnLastPicTime[i] != gTimeRawPic[i]) { gMutexPic[i].lock(); mpPicView[i]->SetPic(grawpic[i]); gMutexPic[i].unlock(); bUpdate = true; mbDraw[i] = true; } } if(bUpdate)update(); } void DialogPic::paintEvent(QPaintEvent *) { int i; for(i=0;i<4;i++) { if(mbDraw[i]) { QImage image = mpPicView[i]->GetImage(); mscene[i]->clear(); mscene[i]->addPixmap(QPixmap::fromImage(image)); mpview[i]->setScene(mscene[i]); mpview[i]->show(); } mbDraw[i] = false; } } void DialogPic::setRefresh(bool brefresh) { mbRefresh = brefresh; }