Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] horloge de la démo

rajouter les heures en chiffres

    20 mars 2008 à 19:30:10

    Bonjour,

    j'aimerais améliorer l'horloge des exemples de Qt en ajouter les heures en chiffres. Malheureusement sur un point.

    Pour le moment j'ai le code suivant :
    1. #include "main.h"
    2.  AnalogClock::AnalogClock(QWidget *parent)
    3.      : QWidget(parent)
    4.  {
    5.      QTimer *timer = new QTimer(this);
    6.      connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    7.      timer->start(10);
    8.      setWindowTitle(tr("Analog Clock"));
    9.      resize(100, 100);
    10.  }
    11.  void AnalogClock::paintEvent(QPaintEvent *)
    12.  {
    13.      static const QPoint hourHand[3] = {
    14.          QPoint(2, 2),
    15.          QPoint(-2, 2),
    16.          QPoint(0, -20)
    17.      };
    18.      static const QPoint minuteHand[3] = {
    19.          QPoint(2, 2),
    20.          QPoint(-2, 2),
    21.          QPoint(0, -30)
    22.      };
    23.      static const QPoint secondHand[4] = {
    24.          QPoint(2, 2),
    25.          QPoint(0, 15),
    26.          QPoint(-2, 2),
    27.          QPoint(0, -48)
    28.      };
    29.      static const QString heures[12] = {
    30.         "12","1","2","3","4","5","6","7","8","9","10","11"
    31.      };
    32.      QColor hourColor(127, 0, 127);
    33.      QColor minuteColor(0, 127, 127, 191);
    34.      int side = qMin(width(), height());
    35.      QTime time = QTime::currentTime();
    36.      QPainter painter(this);
    37.      painter.setRenderHint(QPainter::Antialiasing);
    38.      painter.drawRect(painter.viewport());
    39.      painter.translate(width() / 2, height() / 2);
    40.      painter.scale( side/100,side/100 );
    41.      painter.setPen(Qt::NoPen);
    42.      painter.setBrush(hourColor);
    43.      painter.save();
    44.      painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
    45.      painter.drawConvexPolygon(hourHand, 3);
    46.      painter.restore();
    47.      painter.setPen(hourColor);
    48.      for (int i = 0; i < 12; ++i) {
    49.          painter.drawLine(43, 0, 50, 0);
    50.          QFont myFont ;
    51.          QFontMetrics metric(myFont);
    52.          painter.drawText( -metric.width(heures[i])/2 , -45, heures[i] );
    53.          painter.rotate(30.0);
    54.      }
    55.      painter.setPen(Qt::NoPen);
    56.      painter.setBrush(minuteColor);
    57.      painter.save();
    58.      painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
    59.      painter.drawConvexPolygon(minuteHand, 3);
    60.      painter.restore();
    61.      painter.setPen(minuteColor);
    62.      for (int j = 0; j < 60; ++j) {
    63.          if ((j % 5) != 0)
    64.              painter.drawLine(47, 0, 50, 0);
    65.          painter.rotate(6.0);
    66.      }
    67.      painter.setPen(Qt::NoPen);
    68.      painter.setBrush(minuteColor);
    69.      painter.save();
    70.      painter.rotate( (time.msec()+time.second()*1000)*0.006 );
    71.      painter.drawConvexPolygon(secondHand, 4);
    72.      painter.restore();
    73.  }
    74. int main(int argc, char* argv[])
    75. {
    76.     QApplication app(argc, argv);
    77.     AnalogClock clock ;
    78.     clock.show();
    79.     return app.exec();
    80. }


    merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter

    [Qt] horloge de la démo

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown