QT--电子时钟

简介:

  • 使用了绘图事件、定时事件,有两个窗口,一个窗口用于设置时间(主窗口),一个是时钟窗口

1.主窗口

menu.h文件:

#ifndef MENU_H
#define MENU_H #include <QWidget>
#include <QPushButton>
#include <QLineEdit> class menu : public QWidget
{
Q_OBJECT
public:
explicit menu(QWidget *parent = nullptr); public:
QPushButton *bt1; //显示时钟
QPushButton *bt2; //设置时间
QLineEdit *ls; //输入秒
QLineEdit *lm; //输入分
QLineEdit *lh; //输入时 signals:
void display(); //显示信号
void setTime(int h,int m,int s); //设置时间信号 public:
void send_s();
void send_t(); public slots:
}; #endif // MENU_H

menu.cpp文件:

#include "menu.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QLabel> menu::menu(QWidget *parent) : QWidget(parent)
{
resize(,); QHBoxLayout *hb = new QHBoxLayout();
QVBoxLayout *vb = new QVBoxLayout(); QLabel *l1 = new QLabel(":");
QLabel *l2 = new QLabel(":"); bt1 = new QPushButton("显示时钟");
bt2 = new QPushButton("设置时间");
ls = new QLineEdit("");
lm = new QLineEdit("");
lh = new QLineEdit(""); hb->addWidget(lh);
hb->addWidget(l1);
hb->addWidget(lm);
hb->addWidget(l2);
hb->addWidget(ls); hb->addWidget(bt2); vb->addLayout(hb);
vb->addWidget(bt1); this->setLayout(vb); connect(bt1,&QPushButton::released,this,&menu::send_s); //显示时钟
connect(bt2,&QPushButton::released,this,&menu::send_t); //设置时间 } void menu::send_t() //设置
{
int s = ls->text().toInt();
int m = lm->text().toInt();
int h = * lh->text().toInt(); emit setTime(h,m,s);
}
void menu::send_s() //显示
{
emit display();
}

2.时钟窗口

widget.h文件:

#ifndef WIDGET_H
#define WIDGET_H #include "menu.h"
#include <QWidget>
#include <QPaintEvent> //绘图事件
#include <QTimerEvent> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
int s = ; //秒
int m = ; //分
int h = ; //时
QString T; //总时间 QPainter *painter; menu w1; public:
void send_s(); //显示钟表
void get_t(int h1,int m1,int s1); //设置时间
void timerEvent(QTimerEvent *adf); //定时
void paintEvent(QPaintEvent *event); //绘图
public:
explicit Widget(QWidget *parent = nullptr);
~Widget(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H

widget.cpp文件:

#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QPainter> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); w1.show();
startTimer(); //定时1秒 resize(,);
this->setMaximumSize(,); //设置窗口大小 connect(&w1,&menu::display,this,&Widget::send_s); //显示钟表
connect(&w1,&menu::setTime,this,&Widget::get_t);
} void Widget::send_s() //显示钟表
{
this->show();
} void Widget::get_t(int h1,int m1,int s1)
{
s = s1;
m = m1;
h = h1;
} void Widget::timerEvent(QTimerEvent *event)
{
qDebug() <<"定时" ;
s ++;
if(s == ) //180+360=540
{
m++;
s = ;
} if(m == )
{
h ++;
}
if(m == )
{
m = ;
}
if(h == )
{
h = ;
}
QString Ss = QString::number(s);
QString Sm = QString::number(m);
int H = h / ;
QString Sh = QString::number(H);
T = Sh + ":" + Sm + ":" +Ss;
qDebug() <<T; } void Widget::paintEvent(QPaintEvent *event)
{
painter = new QPainter(this); //画家 /* 画笔 */
QPen pen(Qt::red,);
painter->setPen(pen); /* 移动画家 */
painter->translate(this->width()/,this->height()/); /* 画钟 */
QRectF target(-(this->width()/),-(this->height()/), this->width(), this->width());
QRectF source(,, this->width(), this->height());
QPixmap pixmap(":/new/prefix1/time1.png");
painter->drawPixmap(target, pixmap, source); /* 画秒针 */
QRectF target_s(,,, );
QRectF source_s(,, this->width(),this->height());
QPixmap pixmap_s(":/new/prefix1/time_s.png"); painter->rotate(s*+); //定时旋转秒针
painter->drawPixmap(target_s, pixmap_s, source_s); /* 画分针 */
QRectF target_m(-,-,, );
QRectF source_m(,, this->width(), this->height());
QPixmap pixmap_m(":/new/prefix1/time_m.png"); painter->rotate(-(s*+)); //移动回原位
painter->rotate(m*+); //旋转分针
painter->drawPixmap(target_m, pixmap_m, source_m); /* 画时针 */
QRectF target_h(-,-,, );
QRectF source_h(,, this->width(), this->width());
QPixmap pixmap_h(":/new/prefix1/time_h.png"); painter->rotate(-(m*+)); //移动回原位
painter->rotate((h*)+); //旋转分针
painter->drawPixmap(target_h, pixmap_h, source_h); painter->rotate(-(h*+));
painter->drawText(-,,,,Qt::AlignCenter, T); //数字时钟
painter->rotate(h*+); update(); } Widget::~Widget()
{
delete ui;
}

3.运行效果图

QT--电子时钟的更多相关文章

  1. Qt - 与众不同的电子时钟

     Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控 ...

  2. 公开课 之 tony 电子时钟 (课堂笔记)

    # tony 之电子时钟from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QDesktopWidget, QVBoxLayo ...

  3. JavaScript电子时钟+倒计时

    JavaScript时间类      获取时分秒:          getHours()          getMinutes();          getSeconds();       获取 ...

  4. JS实现电子时钟

          目前有个小项目,在首页头部导航栏里需要一个电子时钟的效果,于是我就采用如下代码实现了一个电子时钟的效果.不过不完美,第一种方式容易导致网页莫名其妙的异常,后来觉得可能是做的操作太多了,然后 ...

  5. 桌面小部件----LED电子时钟实现

    桌面控件是通过 Broadcast 的形式来进行控制的,因此每个桌面控件都对应于一个BroadcastReceiver.为了简化桌面控件的开发,Android 系统提供了一个 AppWidgetPro ...

  6. [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板  一块 2.DS3231 ...

  7. 3分钟利用TurnipBit制作电子时钟

    转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 TurnipBit(www.turnipbit.com)是一个面向青少年的开发板 ...

  8. Micropython TurnipBit 电子时钟 青少年编程入门

    电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了.TurnipBit相比于其他开发板,制作电子时钟就更加简 ...

  9. MFC桌面电子时钟的设计与实现

    目录 核心技术 需求分析 程序设计 程序展示 (一)核心技术 MFC(Micosoft Foundation Class Libay,微基础类库)是微基于Windows平台下的C++类库集合,MFC包 ...

  10. 使用CSS3生成的电子时钟特效

    在线演示 本地下载 突然觉得自己对带工作的态度亟需改正,虽然不喜欢现在的加班生活,但是自己要去接受自己不喜欢的,才能获得自己喜欢的. 这是自己好久之前丛过的一个时钟,网上应该有这个的教程,虽然实现的效 ...

随机推荐

  1. .Net Core使用Ocelot网关(一) -负载,限流,熔断,Header转换

    1.什么是API网关 API网关是微服务架构中的唯一入口,它提供一个单独且统一的API入口用于访问内部一个或多个API.它可以具有身份验证,监控,负载均衡,缓存,请求分片与管理,静态响应处理等.API ...

  2. RocketMQ 主题扩分片后遇到的坑

    目录 1.案情回顾 1.1 集群现状 1.2.RocketMQ 在线扩容队列 1.3 消息发送 2.问题暴露 3.问题分析 4.问题复盘 消息组接到某项目组反馈,topic 在扩容后出现部分队列无法被 ...

  3. [TimLinux] Python 元类

    1. type函数 name = "This is a string" print(type(name)) # <class 'str'> print("*& ...

  4. CF595 Div31249A,1249B1,1249B2,1249C1,1249C2,1249D1,1249D2,1249E,1249F)题解

    A:水题,先排序,有相连的输出2,否则输出1. #include<bits/stdc++.h> using namespace std; #define pii pair<int,i ...

  5. DARLING in the FRANXX

    那是一种叫比翼的鸟,这种鸟只有半边翅膀,如果雌鸟和雄鸟不紧靠在一起的话,它们就无法飞上天空,是不完整的生物. 但是,为什么,我总认为这种生活方式是如此美丽,感觉如此美丽. 那是一种叫比翼的鸟,我以前从 ...

  6. 用span写一个特殊样式的1

    用span写一个如下样式的 1 span { display: inline-block; width: 17px; height: 17px; background: var(--themeColo ...

  7. pringboot热部署导致applicationContext获取为空

    在项目中遇到一个很奇怪的问题,写了一个SpringContextUtil工具类来获取applicationContext,初始化的时候断点来看的确是初始化了,applicationContext对象不 ...

  8. 牛客NOIP暑期七天营-提高组2

    第一题:ACGT 题目链接:https://ac.nowcoder.com/acm/contest/931/A trie树.hash.map遍历  ①.trie树上的节点多记一个rest值表示还有多少 ...

  9. 《Java基础知识》Java继承的概念和实现

    继承时类和类之间的关系,是一个很简单很直观的概念,与显示生活中的继承(例如儿子继承了父亲财产)类似. 继承可以理解为一个类从另一个类中获取方法和属性的过程.如果类B继承于类A,那么类B就拥有类A的属性 ...

  10. Android BGradualProgress 多种渐变、直角or弧角、进度条、加载条

    可实现多种渐变.直角or弧角.进度条.加载条 (Various gradient, right or arc angle, progress bar and loading bar can be re ...