dialogbigpic.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "dialogbigpic.h"
  2. #include "ui_dialogbigpic.h"
  3. #include "mainwindow.h"
  4. extern iv::vision::rawpic grawpic[CAMERA_NUM];
  5. extern qint64 gTimeRawPic[CAMERA_NUM] ;
  6. extern QMutex gMutexPic[CAMERA_NUM];
  7. DialogBigPic::DialogBigPic(QWidget *parent) :
  8. QDialog(parent),
  9. ui(new Ui::DialogBigPic)
  10. {
  11. ui->setupUi(this);
  12. mpview = new MyView(this);
  13. mpview->setObjectName(QStringLiteral("graphicsView"));
  14. mpview->setGeometry(QRect(30, 30, 600, 600));
  15. mpview->setCacheMode(mpview->CacheBackground);
  16. mscene = new QGraphicsScene;
  17. mpPicView = new IVPicView();
  18. mpPicView->start();
  19. mnLastPicTime = 0;
  20. mbDraw = false;
  21. connect(mpPicView,SIGNAL(painterupadate()),this,SLOT(onPainterUpdate()));
  22. QTimer * timer = new QTimer();
  23. connect(timer,SIGNAL(timeout()),this,SLOT(onTimerPic()));
  24. timer->start(10);
  25. setWindowTitle("View Picture");
  26. }
  27. DialogBigPic::~DialogBigPic()
  28. {
  29. delete ui;
  30. }
  31. void DialogBigPic::onTimerPic()
  32. {
  33. if(mbRefresh == false)return;
  34. bool bUpdate = false;
  35. int ncam = mnCamera;
  36. if((mnLastPicTime != gTimeRawPic[ncam])&&(gTimeRawPic[ncam]!= 0))
  37. {
  38. gMutexPic[ncam].lock();
  39. mpPicView->SetPic(grawpic[ncam]);
  40. gMutexPic[ncam].unlock();
  41. bUpdate = true;
  42. mbDraw = true;
  43. }
  44. // if(bUpdate)update();
  45. }
  46. void DialogBigPic::paintEvent(QPaintEvent *)
  47. {
  48. if(mbDraw)
  49. {
  50. QImage image = mpPicView->GetImage();
  51. mscene->clear();
  52. mscene->addPixmap(QPixmap::fromImage(image));
  53. mpview->setScene(mscene);
  54. mpview->show();
  55. }
  56. }
  57. void DialogBigPic::resizeEvent(QResizeEvent *event)
  58. {
  59. (void)event;
  60. QRect rect = this->geometry();
  61. double fwidth = rect.width()/1;
  62. double fheight = rect.height()/1;
  63. mpview->setGeometry(0,0,fwidth,fheight);
  64. // rect.setX(rect.x());
  65. }
  66. void DialogBigPic::setRefresh(bool brefresh)
  67. {
  68. mbRefresh = brefresh;
  69. }
  70. void DialogBigPic::onPainterUpdate()
  71. {
  72. update();
  73. }
  74. void DialogBigPic::setCamera(int n)
  75. {
  76. mnCamera = n;
  77. }