QT--电子时钟
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--电子时钟的更多相关文章
- Qt - 与众不同的电子时钟
Qt的电子时钟是个老掉牙的demo了,但是利用lcdNumber显示的样子非常老土(下图第一个显示效果),一看就知道是从qt帮助文档里摘出来的example,毫无新意. 美化一下系统时钟,抛开固有控 ...
- 公开课 之 tony 电子时钟 (课堂笔记)
# tony 之电子时钟from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QDesktopWidget, QVBoxLayo ...
- JavaScript电子时钟+倒计时
JavaScript时间类 获取时分秒: getHours() getMinutes(); getSeconds(); 获取 ...
- JS实现电子时钟
目前有个小项目,在首页头部导航栏里需要一个电子时钟的效果,于是我就采用如下代码实现了一个电子时钟的效果.不过不完美,第一种方式容易导致网页莫名其妙的异常,后来觉得可能是做的操作太多了,然后 ...
- 桌面小部件----LED电子时钟实现
桌面控件是通过 Broadcast 的形式来进行控制的,因此每个桌面控件都对应于一个BroadcastReceiver.为了简化桌面控件的开发,Android 系统提供了一个 AppWidgetPro ...
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 一.本次实验所需器材 1.TPYboard V102板 一块 2.DS3231 ...
- 3分钟利用TurnipBit制作电子时钟
转载请注明:@小五义 http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 TurnipBit(www.turnipbit.com)是一个面向青少年的开发板 ...
- Micropython TurnipBit 电子时钟 青少年编程入门
电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了.TurnipBit相比于其他开发板,制作电子时钟就更加简 ...
- MFC桌面电子时钟的设计与实现
目录 核心技术 需求分析 程序设计 程序展示 (一)核心技术 MFC(Micosoft Foundation Class Libay,微基础类库)是微基于Windows平台下的C++类库集合,MFC包 ...
- 使用CSS3生成的电子时钟特效
在线演示 本地下载 突然觉得自己对带工作的态度亟需改正,虽然不喜欢现在的加班生活,但是自己要去接受自己不喜欢的,才能获得自己喜欢的. 这是自己好久之前丛过的一个时钟,网上应该有这个的教程,虽然实现的效 ...
随机推荐
- [TimLinux] Django 中间件
1. 定义 中间件是一个钩子框架,深入到django的请求/响应处理过程中.这是一个轻量.底层插件系统,目的是全局修改django的输入或输出.每一个中间件组件都是用来处理特定的功能.例如django ...
- ASP.NET Core 选项模式源码学习Options IOptionsMonitor(三)
前言 IOptionsMonitor 是一种单一示例服务,可随时检索当前选项值,这在单一实例依赖项中尤其有用.IOptionsMonitor用于检索选项并管理TOption实例的选项通知, IOpti ...
- Java并发编程杂记(1)
高并发: cpu -- 缓存 -- 内存 资源利用率 公平性 便利性 生活举例 --- 串行任务中的异步性:我在烧水的时候看书 --- 平衡点 安全性问题 --- 产生竞态条件 共享数据 -- ...
- git下载问题
官网下载:打不开,可用git for Windows 下载 地址:https://github.com/git-for-windows/git/releases
- 深入探索Java设计模式之单例模式
单例模式可确保在给定的时间实例中只能创建一个具有全局访问点的对象.这是面向对象编程中最常用的技术之一.尽管它很简单,但从类设计的角度来看可能是最简单的,但是在尝试实现它们之前,必须先解决一些细微的问题 ...
- 我学习Python的经历
1. 被逼无奈找到了Python Python作为当今非常热的话题,常常被各级别的程序员所提到,也有很多的小白问我,到底啥是Python,它能干啥! 我用Python时间不是特别长,最早使用是在201 ...
- deconstructSigs|探寻cosmic的独特“气质”-mutation signature !
deconstructSigs-mutation signature看一下你的数据是什么“气质”的? 本文首发于“生信补给站” https://mp.weixin.qq.com/s/k7yzk9hPX ...
- django基础之day04知识点----查询相关
from django.test import TestCase # Create your tests here. ''' 当你想单独测试django中某一个py文件时,你需要手动配置测试文件 在m ...
- java8-从Lamda到方法引用和构造引用
一方法引用概述 经过前面2章Lamda原理引入和Lamda解析,基本就会熟练使用Lamda表达式,这次我们更深入点.来了解一下方法引用. 方法引用是特定Lamda表达式的一种简写,其思路就是能替换La ...
- 基于Tomcat的GeoServer部署步骤
一.安装JAVA 资源:JDK1.8 提取码:0y26 步骤: 1.安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置": 2. ...

