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 P3913 车的攻击 |数学
题目描述 N×N 的国际象棋棋盘上有KK 个车,第ii个车位于第R_i行,第C_i列.求至少被一个车攻击的格子数量. 车可以攻击所有同一行或者同一列的地方. 输入格式 第1 行,2 个整数N,K. 接 ...
- 编码规范(c#)
万丈高楼平地起,好的编码风格能让别人撸起来更带劲,反之则想吐槽这是哪个傻X写的,这都是些什么乱七八糟的玩意? 然后看后面的注释发现是自己以前写的,那场面一度很尴尬.... 规约不是规则,不是一定要这样 ...
- 智能家居CC2530功率放大组网RFX2401C和AT2401C的区别
两者最大的区别就是RFX2401C的增益为12dbmAT2401C的增益为14dbm这就会导致AT2401C的功耗会比RFX2401C大一点点,但距离也会相对更远,并且增加了EDS防静电等级,多出2个 ...
- 制作Win10系统安装U盘和安装纯净版Win10
重要提示 (以下为操作或安装前的必读提示) 1.准备8G或8G以上的U盘(32G以内).制作U盘会格式化U盘,此U盘内的数据需要提前备份至其他U盘或移动硬盘. 2.在格式化.删除分区和重新安装操作系统 ...
- 小白学 Python 爬虫(21):解析库 Beautiful Soup(上)
小白学 Python 爬虫(21):解析库 Beautiful Soup(上) 人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前 ...
- Java 异常规范
1. 只针对异常情况使用异常,不要用异常来控制流程 try { int i = 0; while (true) { range[i++].doSomething(); } } catch (Array ...
- IPFS学习-哈希
Hashes 哈希函数是接受一些任意输入并返回固定长度值的函数.具体值取决于所使用的给定哈希算法,例如SHA-1(GIT在使用),SHA-256,或者是BLAKE2,但是给予一个输入使用哈希算法总是返 ...
- 《大型网站系统与Java中间件》读书笔记(上)
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 这本书买了一段时间了,之前在杭州没带过去,现在读完第 ...
- DevExpress的LookUpEdit怎样不显示列名
场景 DevExpress的下拉框控件LookUpEdit的使用.添加item选项值.修改默认显示值: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...
- C# DataTable to List<T> based on reflection.
From https://www.cnblogs.com/zjbky/p/9242140.html static class ExtendClass { public static List<T ...

