最近刚开始接触Qt,通过查看Qt自带的demo,稍微做了下修改,参考了下:http://www.tudou.com/programs/view/1Nwo0piJcBQ/ 的视频,具体实现如下:
1. 首先安装Qt环境,在此略过。打开Qt Creator
2. 新建一个工程,取名为clock
3. 编辑clock.h头文件
#ifndef CLOCK_H
#define CLOCK_H
#include
namespace Ui {
class Clock;
}
class Clock : public QWidget
{
Q_OBJECT
public:
explicit Clock(QWidget *parent = 0);
~Clock();
protected:
void paintEvent(QPaintEvent *);
private:
Ui::Clock *ui;
};
#endif // CLOCK_H
4. 编辑main.cpp
#include
#include "clock.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Clock w;
w.show();
return a.exec();
}
5. 编辑主要的功能,clock.cpp
#include
#include "clock.h"
#include "ui_clock.h"
Clock::Clock(QWidget *parent) :
QWidget(parent),
ui(new Ui::Clock)
{
ui->setupUi(this);
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(1000);
setWindowTitle(tr("Clock"));
resize(200, 200);
}
Clock::~Clock()
{
delete ui;
}
void Clock::paintEvent(QPaintEvent *)
{
static const QPoint hour[3] = {
QPoint(7, 8),
QPoint(-7, 8),
QPoint(0, -40)
};
static const QPoint min[3] = {
QPoint(7, 8),
QPoint(-7, 8),
QPoint(0, -60)
};
static const QPoint sec[3] = {
QPoint(2, 8),
QPoint(-2, 8),
QPoint(0, -80)
};
QColor hourColor(Qt::darkGreen);
QColor minColor(Qt::darkRed);
QColor secColor(Qt::black);
int side = qMin(width(), height());
QTime time = QTime::currentTime();
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.translate(width() / 2, height() / 2);
painter.scale(side / 200.0, side / 200.0);
painter.setPen(Qt::NoPen);
painter.setBrush(hourColor);
painter.save();
painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
painter.drawConvexPolygon(hour, 3);
painter.restore();
painter.setPen(hourColor);
for (int i = 0; i <12; i++)
{
painter.setPen(Qt::black);
painter.drawLine(88, 0, 96, 0);
painter.rotate(30.0);
}
painter.setPen(Qt::NoPen);
painter.setBrush(minColor);
painter.save();
painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
painter.drawConvexPolygon(min, 3);
painter.restore();
painter.setPen(minColor);
for (int j = 0; j <60; j++)
{
painter.setPen(Qt::green);
if ((j % 5) != 0)
painter.drawLine(92, 0, 96, 0);
painter.rotate(6.0);
}
painter.setPen(Qt::NoPen);
painter.setBrush(secColor);
painter.save();
painter.rotate(6.0 * time.second());
painter.drawConvexPolygon(sec, 3);
painter.restore();
}
编译完成后可以在本机正常运行。但是放到别的机器就无法正常运行。网上查了下资料,都说动态编译需要几个dll文件:
mingwm10.dll
QtCore4.dll
QtGui4.dll
clock.exe也放到一个文件夹下,在Qt Creator摁下”CRTL+T“,选择release版本即可!
样子如下所示: