Você está na página 1de 2

Animaciones:

1. Abrir nuevo projecto QT Widget Application


2. Nombrar la nueva aplicación
3. Seleccionar los kits para ser ejecutado (Android y Desktop)
4. Dejar los siguientes parámetros por default
5. En el archivo Mainwindows.ui remover los widgets creados por default (toolBar, MenuBar y StatusBar)
6. En el archivo mainwindows.h incluir las siguientes librerias
a. #include <QTime>
b. #include <QTimer>
c. #include <QPainter>
7. Declarar el evento paintEvent en el mismo archivo después del destructor de la clase
a. public:
b. explicit MainWindow(QWidget *parent = 0);
c. ~MainWindow();
d. virtual void paintEvent(QPaintEvent *event);
8. Nos vamos al archivo mainwindows.cpp y colocamos el siguiente método

void MainWindow::paintEvent(QPaintEvent *event)


{
static const QPoint hourHand[3] =
{
QPoint(4, 4),
QPoint(-4, 4),
QPoint(0, -40)
};
static const QPoint minuteHand[3] =
{
QPoint(4, 4),
QPoint(-4, 4),
QPoint(0, -70)
};
static const QPoint secondHand[3] =
{
QPoint(2, 2),
QPoint(-2, 2),
QPoint(0, -90)
};

int side = qMin(width(), height());


QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.translate(width() / 2, height() / 2);
painter.scale(side / 250.0, side / 250.0);

for (int i = 0; i < 60; ++i)


{
if ((i % 5) != 0)
painter.drawLine(92, 0, 96, 0);
else
painter.drawLine(86, 0, 96, 0);
painter.rotate(6.0);
}

QTime time = QTime::currentTime();


// Dibujando manecilla de horas
painter.save();
painter.rotate((time.hour() * 360) / 12);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::black);
painter.drawConvexPolygon(hourHand, 3);
painter.restore();
// Dibujando manecilla Minutos
painter.save();
painter.rotate((time.minute() * 360) / 60);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::black);
painter.drawConvexPolygon(minuteHand, 3);
painter.restore();
// Dibujando manecilla segundos
painter.save();
painter.rotate((time.second() * 360) / 60);
painter.setPen(Qt::NoPen);
painter.setBrush(Qt::black);
painter.drawConvexPolygon(secondHand, 3);
painter.restore();
}

9. Por último, en el mismo archivo .cpp localizar el método donde se crea la ventana

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{

Y agregar las siguientes líneas:

ui->setupUi(this);
QTimer* timer = new QTimer(this);
timer->start(1000);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));

Você também pode gostar