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生成的电子时钟特效
在线演示 本地下载 突然觉得自己对带工作的态度亟需改正,虽然不喜欢现在的加班生活,但是自己要去接受自己不喜欢的,才能获得自己喜欢的. 这是自己好久之前丛过的一个时钟,网上应该有这个的教程,虽然实现的效 ...
随机推荐
- luogu P1976 鸡蛋饼
题目背景 Czyzoiers 都想知道小 x 为什么对鸡蛋饼情有独钟.经过一番逼问,小 x 道出了实情:因为他喜欢圆. 题目描述 最近小 x 又发现了一个关于圆的有趣的问题:在圆上有 2N 个不同的点 ...
- .NETCore 访问国产达梦数据库
前言 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库管理系统的研发.销售与服务,同时可为用户提供大数据平台架构咨询.数据技术方案规划.产品部署 ...
- 字典dict的深入学习(item() / items() 一致的)
字典Dict的跟进学习: 一. items()方法的遍历:items()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回. dict = {"name" ...
- SpringBoot中JdbcTemplate
步骤如下: 依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- 2017 CCPC秦皇岛 G题 Numbers
DreamGrid has a nonnegative integer . He would like to divide into nonnegative integers and minimi ...
- UESTC1977-图书馆(AC自动机应用)
M - 图书馆 Time Limit: 2000 MS Memory Limit: 256 MB Submit Status 电子科技太学图书馆创建于1956年,馆舍总面积66974平方米,各 ...
- Linux基础 - Crontab定时任务
目录 设置Cron任务 创建任务 设置运行周期 配置命令 常见问题 如何列出所有的Cron任务 如何查看Cron任务运行log 如何配置带有虚拟venv的Python脚本 如何在Cron 任务中发送邮 ...
- ARTS-S mongo关闭与启动
关闭 mongo admin --eval "db.shutdownServer()" 删除dbdata目录下的mongo.lock 启动 /usr/bin/mongod --db ...
- Nginx安装echo模块echo-nginx-module
https://github.com/openresty/echo-nginx-module 这个模块不包含在 Nginx 源码中,安装方法: 1. 首先下载模块源码:https://github.c ...
- Day 08 可变与不可变对象/列表与字典内置方法
目录 可变对象与不可变对象 可变对象 不可变对象 列表的内置方法 字典内置方法 可变对象与不可变对象 可变对象 对象指向的内存中的值会改变,当更改这个变量的时候,还是指向原来内存中的值,并且在原来的内 ...

