当前位置: 首页 > news >正文

QT实现钟表

1、

头文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPaintEvent>           //绘制事件类
#include <QDebug>               //信息调试类
#include <QPainter>              //画家类
#include <QTimerEvent>             //定时器事件处理类
#include <QTime>
#include <QTimer>            //定时器类
#include <QDateTime>            //日期时间类QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();//重写绘制事件处理函数void paintEvent(QPaintEvent *event) override;private:Ui::MainWindow *ui;//定义一个定时器的对象指针QTimer *timer;
};
#endif // MAINWINDOW_H
源文件
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//给定时器指针实例化对象timer = new QTimer(this);timer->start(1000);  //一秒钟//将该定时器的timeout信号连接到自定义槽函数中connect(timer, SIGNAL(timeout()), this, SLOT(update()));}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::paintEvent(QPaintEvent *event)
{//实例化一个画家QPainter painter(this);//实例化一个画笔QPen pen;pen.setColor(QColor("black"));  //将画笔设置成黑色pen.setStyle(Qt::SolidLine);  //设置线型pen.setWidth(5);  //设置画笔的粗细//将画笔给画家安排上painter.setPen(pen);//给画家偏移起始坐标点painter.translate(this->width()/2,this->height()/2);  //界面的一半//给画家偏移坐标系painter.rotate(0);  //也就是旋转//填充图形内的颜色(刷子)painter.setBrush(QBrush(QColor("skyblue")));//画个圆形painter.drawEllipse(QPoint(0,0), 200,200);  //QPoint(0,0)为起始位置//画出表盘for(int i=1;i<=60;i++){painter.rotate(6);painter.drawLine(0,195,0,200);}//painter.rotate(0);for(int i=1;i<=12;i++){painter.rotate(30);painter.drawLine(0,190,0,200);}QTime sys_t = QTime::currentTime();//时针painter.save();  //保存pen.setColor(QColor("green"));  //将画笔设置成绿色painter.setPen(pen);painter.rotate(6*sys_t.second());painter.drawLine(0,0,0,150);//分针painter.restore();painter.save();pen.setColor(QColor("blue"));  //将画笔设置成蓝色painter.setPen(pen);painter.rotate(6*(sys_t.minute()+sys_t.second()/60));painter.drawLine(0,0,0,120);//秒针painter.restore();painter.save();pen.setColor(QColor("red"));  //将画笔设置成红色painter.setPen(pen);painter.rotate(30*((sys_t.hour()+sys_t.minute()/60)));painter.drawLine(0,0,0,90);}
主函数
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

2、思维导图

http://www.lryc.cn/news/171622.html

相关文章:

  • 准备我们心爱的IDEA写Jsp
  • 将近 5 万字讲解 Python Django 框架详细知识点(更新中)
  • Arcgis提取每个像元的多波段反射率值
  • JavaScript面试题整理(一)
  • 数据结构:树和二叉树之-堆排列 (万字详解)
  • 爬虫入门基础:深入解析HTTP协议的工作过程
  • k8备份与恢复-Velero
  • 基于Python开发的火车票分析助手(源码+可执行程序+程序配置说明书+程序使用说明书)
  • 旺店通·企业奇门与金蝶云星空对接集成订单查询连通销售订单新增(旺店通销售-金蝶销售订单-小红书)
  • 卡尔曼滤波应用在数据处理方面的应用
  • PROFIBUS主站转ETHERCAT协议网关
  • Vue路由的使用及node.js下载安装和环境搭建
  • 【算法训练-二叉树 三】【最大深度与直径】求二叉树的最大深度、求二叉树的直径
  • 查看linux是centos还是Ubuntu
  • win10怎么关闭自动更新,这个方法你知道吗?
  • 「语音芯片」常见的OTP芯片故障分析
  • 孩子写作业买什么样台灯合适?适合孩子读写台灯推荐
  • DBAPI插件开发指南
  • 线程池使用之自定义线程池
  • Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能
  • Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈
  • Linux CentOS7 history命令
  • XC5350A 单节锂电池保护芯片 过放2.9V/2.8V/2.4V保护IC
  • 单片机论文参考:1、基于单片机的电子琴
  • Opencv源码解析(2)算法
  • 让Mac菜单栏变得更加美观整洁——Bartender 5
  • 服务器迁移:无缝过渡指南
  • 安卓开发中ViewBinding的使用
  • 【初阶数据结构】树(tree)的基本概念——C语言
  • 二叉树知识点