QT5实现电子时钟

本文实例为大家分享了QT5实现电子时钟的具体代码,供大家参考,具体内容如下

一、电子时钟的显示

效果如下:

电子时钟显示

二、新建工程

Widgets Application项目名位clock,基础类位QDialog,取消创建UI界面的勾选框,项目名右击添加新文件

在弹出的对话框中选择“C++ Class”,Base class基础类名“QLCDNumber”,class name命名为digiclock,点击完成。

三、编辑digiclock.h文件

#ifndef DIGICLOCK_H
#define DIGICLOCK_H
#include <QLCDNumber>
 
class DigiClock : public QLCDNumber
{
public:
    DigiClock(QWidget *parent=0);
    void mousePressEvent(QMouseEvent *);
    void mouseMoveEvent(QMouseEvent *);
private slots:
    void showTime();//显示槽函数
 
private:
    QPoint dragPosition;//相对位置偏移
    bool showColon;//是否显示“:”
    QTimer *mtimer;
};
 
#endif // DIGICLOCK_H

四、编辑digiclock.cpp文件

#include "digiclock.h"
#include <QTime>
#include <QTimer>
#include <QMouseEvent>
#include <QDebug>
 
DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{
    QPalette p = palette();//
    p.setColor(QPalette::Window,Qt::blue);
    setPalette(p);//设置窗体颜色
    setWindowFlags(Qt::FramelessWindowHint);//窗体设置位无边框
    setWindowOpacity(0.5);//设置透明度
    mtimer = new QTimer(this);//new 定时器对象
    //下列方法1不可以定时
    //connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime()));
    //下列方法2可以实现定时
    connect(mtimer,&QTimer::timeout,[=](){showTime();});   
    if(mtimer->isActive()==false)//定时器检查激活状态
    {
    mtimer->start(1000);//启动
    }
    showTime();//槽函数
    resize(300,60);
    showColon=true;
}
void DigiClock::showTime()
{
    QTime time1 = QTime::currentTime();//获取当前时间
    QString text = time1.toString("hh:mm:ss");
    this->setDigitCount(8);//设置显示长度
 
    if(showColon)
    {
        text[2]=':';
        text[5]=':';
        showColon=false;
    }else
    {
        text[2]=' ';
        text[5]=' ';
        showColon=true;
    }
     //qDebug()<<text;
     display(text);
}
void DigiClock::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        //获取移动参考点
        dragPosition=event->globalPos()-frameGeometry().topLeft();
        event->accept();
    }
    if(event->button()==Qt::RightButton)
    {
        close();
    }
}
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons()&Qt::LeftButton)
    {
        move(event->globalPos()-dragPosition);//拖拽移动
        event->accept();
    }
}

五、编辑主函数

#include "dialog.h"
 
#include <QApplication>
#include "digiclock.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DigiClock w;
    w.show();
    return a.exec();
}

六、总结

调试方法1时,connect(mtimer,SIGNAL(timeout()),this,SLOT(showTime()));不能实现定时的效果,纠结了好一阵,还是没发现问题,可能时QT书写形式更新了?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Python+Pyqt实现简单GUI电子时钟

    本文实例为大家分享了Python+Pyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QWidget,QApplication,QLCDNumber,QVBoxLayout,QMessageBox,QPushButton import sy

  • Qt实现简易时钟

    本文实例为大家分享了Qt实现简易时钟展示的具体代码,供大家参考,具体内容如下 一.效果展示 简单实现时钟(圆盘+QLCDNumber),大小刻度,数字等. 二.实现 .pro QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++11 # The following define makes your compiler emit warnings if you use # any Qt featur

  • Qt绘制简单时钟

    本文实例为大家分享了Qt绘制简单时钟的具体代码,供大家参考,具体内容如下 概述 (1)基本原理 利用简单的几何图形绘出表盘和指针,然后基于系统时间调整指针偏转角度达到模拟时钟的效果. 其中可以加上自己喜欢的背景资源,设计不同风格的时钟. (2)部分函数说明 ①调色和填充 painter.setBrush(Qt::red); //设置画刷,填充颜色(红色) painter.setPen(Qt::red); //设置画笔,外围轮廓颜色(红色) ②抗锯齿(减少图形外围锯齿状,使线条平滑) painte

  • python+PyQT实现系统桌面时钟

    用Python + PyQT写的一个系统桌面时钟,刚学习Python,写的比较简陋,但是基本的功能还可以. 功能: ①窗体在应用程序最上层,不用但是打开其他应用后看不到时间 ②左键双击全屏,可以做小屏保使用,再次双击退出全屏. ③系统托盘图标,主要参考PyQt4源码目录中的PyQt4\examples\desktop\systray下的程序 ④鼠标右键,将程序最小化 使用时需要heart.svg放在源代码同级目录下,[文件可在PyQt4示例代码目录下PyQt4\examples\desktop\

  • QT实现动态时钟

    本文实例为大家分享了QT实现动态时钟的具体代码,供大家参考,具体内容如下 首次学习QT,这次用QT实现了动态图的制作,并成功制作了一个简易的时钟,效果如图: 加快100倍效果 所用背景图,如下(素材来源于百度图片): 代码,原理如下: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; }

  • PyQt5使用QTimer实现电子时钟

    本文用 PyQt5 的QTimer类的两种方式实现电子时钟,供大家参考,具体内容如下 [效果图] [知识点] QTimer类提供了定时器信号/槽和单触发定时器. 它在内部使用定时器事件来提供更通用的定时器. QTimer很容易使用:创建一个QTimer,使用start()来开始并且把它的timeout()连接到适当的槽.当这段时间过去了,它将会发射timeout()信号. [实现] 1.定时器信号/槽方式 class MyTimer(QWidget): def __init__(self, pa

  • QTimer与QTime实现电子时钟

    本文实例为大家分享了QTimer与QTime实现电子时钟的具体代码,供大家参考,具体内容如下 使用QLCDNumber控件进行显示 QLCDNumber控件默认只显示5个字符,可以使用setDigitCount(int size)进行设置显示个数 使用Display(QString str) 设置显示内容 该函数拥有多个重载,字符 整型 浮点型都可以作为参数 效果图: 代码:头文件 #include <QLCDNumber> class NumClock : public QLCDNumber

  • Qt实现指针式时钟 Qt实现动态时钟

    本文实例为大家分享了Qt实现指针式时钟.动态时钟的具体代码,供大家参考,具体内容如下 先上图: 点击运行后首先是一个指针式时钟窗口,点击Digital Clock->可以跳转到数字时钟窗口,再点击Move Clock->可以还原为指针式时钟窗口 关于整个程序的讲解都在代码注释中给出,很详细~ 概要: 我设计两个窗口,一个主窗口一个子窗口,利用按钮+信号与槽机制,实现两个窗口的互相切换,其中主窗口用来显示指针时钟,完成三个基本要求: 1.正确显示系统时钟: 2.能准确定位时钟刻度和时分秒针的位置

  • Qt编程实现小时钟

    Hello World! 学习编程语言的最简单最经典的小程序,当然Qt也不例外.在学习画图时,我觉得写个时钟小程序也是个比较好的开始.在之前的<Matlab及Java小时>一文中,我也从写时钟程序作为学习画图的开始.三者之间的不同点在于,matlab是通过while循环来进行重绘,Java和Qt事件来处理.实时显示时钟,都是通过改变指针与坐标轴的相对位置来实现的.前两者都是改变指针,而Qt是旋转坐标轴.具体代码如下: 1.widget.h文件 #ifndef WIDGET_H #define

  • Qt设计时钟效果

    作为一位Qt的初学者,也是一位编程的小白,我今天想教大家如何使用Qt来设计一个时钟. 首先,我们要学习如何绘图--QPainter类 QPainter通常在一个窗口的重绘事件(paint event)的处理函数paintEvent中进行绘制.QPainter类常用的功能有以下几类: 1)设置绘图工具.包括设置画笔(setPen),设置画刷(setBrush),设置字体(setFont)以及设置背景(setBackgroundMode). 2)绘制图形和文字,如图: QPainter部分画图函数的

随机推荐