Advertisement
Guest User

qt simple angle rotation

a guest
Nov 27th, 2015
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <QApplication>
  2. #include <QWidget>
  3. #include <QTimer>
  4. #include <QPainter>
  5. #include <qmath.h>
  6.  
  7. class MyWidget : public QWidget {
  8.     Q_OBJECT
  9.  
  10. public:
  11.     MyWidget() : m_angle(0) {
  12.         QTimer * animTimer = new QTimer(this);
  13.         connect(animTimer, SIGNAL(timeout()), this, SLOT(animate()));
  14.         animTimer->start(33);
  15.     }
  16.  
  17. protected:
  18.     void paintEvent(QPaintEvent * e) {
  19.         QWidget::paintEvent(e);
  20.         QSize s = size();
  21.         float radius = qMin(s.width(), s.height()) * 0.49;
  22.         QPointF center(s.width() / 2.0, s.height() / 2.0);
  23.         enum { Sides = 3 };
  24.         QPointF vertices[Sides];
  25.         for(int i = 0; i < Sides; ++i) {
  26.             double angle = m_angle + (2.0 * M_PI) * (i / (double)Sides);
  27.             vertices[i] = QPointF(
  28.                         radius * cos(angle),
  29.                         radius * sin(angle));
  30.             vertices[i] += center;
  31.         }
  32.         QPainter painter(this);
  33.         painter.setBrush(Qt::black);
  34.         painter.drawPolygon(vertices, Sides);
  35.     }
  36.  
  37. private slots:
  38.     void animate() {
  39.         m_angle += 0.05;
  40.         if(m_angle > M_PI * 2) {
  41.             m_angle -= M_PI;
  42.         }
  43.         update();
  44.     }
  45.  
  46. private:
  47.     double m_angle;
  48. };
  49.  
  50. int main(int argc, char *argv[])
  51. {
  52.     QApplication a(argc, argv);
  53.  
  54.     MyWidget w;
  55.     w.show();
  56.  
  57.     return a.exec();
  58. }
  59.  
  60. #include "main.moc"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement