xvalidatelabel.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #include "xvalidatelabel.h"
  2. XValidateLabel::XValidateLabel(QWidget *parent) :
  3. QLabel(parent)
  4. {
  5. refresh();
  6. setAlignment(Qt::AlignCenter|Qt::AlignHCenter);
  7. }
  8. void XValidateLabel::refresh()
  9. {
  10. QTime time;
  11. time= QTime::currentTime();
  12. qsrand(time.msec()+time.second()*1000);
  13. int rnd = qrand()%9999;
  14. QString code = "00000"+QString::number(rnd);
  15. this->setText(code.right(4));
  16. getRandPoints();
  17. update();
  18. }
  19. void XValidateLabel::paintEvent(QPaintEvent *e)
  20. {
  21. QPainter painter(this);
  22. for(int i=0;i<m_x.size();i++)
  23. {
  24. QPen pen(Qt::black,1);
  25. painter.setPen(pen);
  26. painter.drawLine(m_x.at(i),m_y.at(i));
  27. // painter.drawPoint(m_x.at(i));
  28. // painter.drawPoint(m_y.at(i));
  29. }
  30. QLabel::paintEvent(e);
  31. }
  32. void XValidateLabel::resizeEvent(QResizeEvent *e)
  33. {
  34. refresh();
  35. QLabel::resizeEvent(e);
  36. }
  37. void XValidateLabel::getRandPoints()
  38. {
  39. QTime time1;
  40. time1= QTime::currentTime();
  41. qsrand(time1.msec()+time1.second()*1000);
  42. m_x.clear();
  43. m_y.clear();
  44. int w = width()-10;
  45. int h = height()-10;
  46. for(int i=0;i<5;i++)
  47. {
  48. int rnd1 = qrand()%w;
  49. int rnd2 = qrand()%h;
  50. m_x.append(QPoint(5+rnd1,5+rnd2));
  51. }
  52. for(int i=0;i<5;i++)
  53. {
  54. int rnd1 = qrand()%w;
  55. int rnd2 = qrand()%h;
  56. m_y.append(QPoint(5+rnd1,5+rnd2));
  57. }
  58. }