简单时钟:
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
-
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
-
- void paintEvent(QPaintEvent *event);
- //自定义槽函数
- void timer_slot();
-
-
- private:
- Ui::Widget *ui;
-
- QTimer *timer;
-
- QPen pen;
-
- int second;
- int minute;
- int hour;
-
- };
- #endif // WIDGET_H
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
- //定时器实例化对象
- timer = new QTimer(this);
- connect(timer,&QTimer::timeout,this,&Widget::timer_slot);
- //启动定时器
- timer->start(1000);
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
-
- void Widget::timer_slot(){
-
- QDateTime time = QDateTime::currentDateTime();
-
- QString t = time.toString("hh:mm:ss");
-
- //提取时间
- QStringList t1 = t.split(":");
-
- hour = t1[0].toUInt();
- minute = t1[1].toUInt();
- second = t1[2].toUInt();
-
- update();
- }
-
- void Widget::paintEvent(QPaintEvent *event){
- //定义一个马良
- QPainter painter(this);
- //抗锯齿
- painter.setRenderHint(QPainter::Antialiasing);
- //定义一个画笔
- pen.setWidth(3);
- pen.setColor(Qt::green);
- //马良用这个笔
- painter.setPen(pen);
- painter.setFont(QFont("楷体",18));
- //粉刷填充颜色
- QBrush back(QColor("skyblue"));
- painter.setBrush(back);
- //设置画笔起始位置
- painter.translate(this->width()/2,this->height()/2);
- //画个圆
- painter.drawEllipse(QPoint(0,0),200,200);
-
- //开始画刻度线
- int val = 6;
- //先转30度从小的开始画
- painter.rotate(30);
- for(int i = 0;i<60;i++){
-
- //再设置一个笔
- pen.setWidth(2);
- pen.setColor(QColor("popur"));
- painter.setPen(pen);
- //总共60个刻度,每过四个小的一个大的,大刻度要写上数字
- if(val%5 == 1){
- painter.drawLine(QPoint(0,-200),
- QPoint(0,-180));
-
- val++;
- }
- else{
-
- painter.drawLine(QPoint(0,-200),
- QPoint(0,-190));
- val++;
- }
- //每次偏移6度
- painter.rotate(6);
- }
- //转回来
- painter.rotate(-30);
- //时针
- pen.setWidth(5);
- pen.setColor(QColor("purple"));
- pen.setStyle(Qt::SolidLine);
- painter.setPen(pen);
- painter.rotate(hour*30+(minute*6+6*second/60)/12);
- painter.drawLine(QPoint(0,0),QPoint(0,-50));
- painter.rotate(-(hour*30+minute*6/12+6*second/60/12));
-
- //分针
- pen.setWidth(4);
- pen.setColor(QColor("blue"));
- pen.setStyle(Qt::SolidLine);
- painter.setPen(pen);
- painter.rotate(minute*6+second/10);
- painter.drawLine(QPoint(0,-100),QPoint(0,0));
- painter.rotate(-(minute*6+second/10));
-
- //秒钟
- pen.setWidth(3);
- pen.setColor(QColor("green"));
- pen.setStyle(Qt::SolidLine);
- painter.setPen(pen);
- painter.rotate(6*second);
- painter.drawLine(QPoint(0,-140),QPoint(0,0));
-
-
-
-
-
- }
-
-
-
-