Want a second hand on your clock? Replace WorldTimeClock:: paintEvent() with this:

Qt Code:
  1. void WorldTimeClock::paintEvent(QPaintEvent *)
  2. {
  3. static const QPoint hourHand[3] = {
  4. QPoint(7, 8),
  5. QPoint(-7, 8),
  6. QPoint(0, -40)
  7. };
  8.  
  9. static const QPoint minuteHand[3] = {
  10. QPoint(7, 8),
  11. QPoint(-7, 8),
  12. QPoint(0, -70)
  13. };
  14.  
  15. static const QPoint secondHand[2] = {
  16. QPoint( 0, 0 ),
  17. QPoint( 0, -70 )
  18. };
  19.  
  20. QColor hourColor(127, 0, 127);
  21. QColor minuteColor(0, 127, 127, 191);
  22.  
  23. int side = qMin(width(), height());
  24. QTime time = QTime::currentTime();
  25. time = time.addSecs(timeZoneOffset);
  26.  
  27. QPainter painter(this);
  28. painter.setRenderHint(QPainter::Antialiasing);
  29. painter.translate(width() / 2, height() / 2);
  30. painter.scale(side / 200.0, side / 200.0);
  31.  
  32. painter.setPen(Qt::NoPen);
  33. painter.setBrush(hourColor);
  34.  
  35. painter.save();
  36. painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
  37. painter.drawConvexPolygon(hourHand, 3);
  38. painter.restore();
  39.  
  40. painter.setPen(hourColor);
  41.  
  42. for (int i = 0; i < 12; ++i) {
  43. painter.drawLine(88, 0, 96, 0);
  44. painter.rotate(30.0);
  45. }
  46.  
  47. painter.setPen(Qt::NoPen);
  48. painter.setBrush(minuteColor);
  49.  
  50. painter.save();
  51. painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
  52. painter.drawConvexPolygon(minuteHand, 3);
  53. painter.restore();
  54.  
  55. painter.setPen(minuteColor);
  56.  
  57. painter.save();
  58. painter.rotate( 6.0 * time.second() );
  59. painter.drawLines( secondHand, 1 );
  60. painter.restore();
  61.  
  62. for (int j = 0; j < 60; ++j) {
  63. if ((j % 5) != 0)
  64. painter.drawLine(92, 0, 96, 0);
  65. painter.rotate(6.0);
  66. }
  67.  
  68. emit updated(time);
  69. }
To copy to clipboard, switch view to plain text mode