qt-15综合实例(电子时钟)-多态重写鼠标单击和移动事件

news2024/11/16 7:38:07

综合实例-电子时钟

  • 知识点
  • digiclock.h
  • digiclock.cpp
  • main.cpp
  • 运行图

知识点

setWindowOpacity(0.5);//设置窗体透明度
QTimer* Timer = new QTimer(this);//新建一个定时器
connect(Timer,SIGNAL(timeout()),this,SLOT(ShowTime()));
Timer->start(1000);//启动定时器

digiclock.h

#ifndef DIGICLOCK_H
#define DIGICLOCK_H

#include <QDialog>
#include <QLCDNumber>

class DigiClock : public QLCDNumber
{
    Q_OBJECT

public:
    DigiClock(QWidget *parent = nullptr);
    ~DigiClock();
    void mousePressEvent(QMouseEvent*);
    void mouseMoveEvent(QMouseEvent*);
public slots:
    void ShowTime();
private:
    QPoint DragPosition;//保存鼠标相对电子时钟窗体左上角的偏移值
    bool ShowColon;//用于显示事件是否显示":"

};
#endif // DIGICLOCK_H

digiclock.cpp

#include "digiclock.h"
#include <QTimer>
#include <QTime>
#include <QMouseEvent>

DigiClock::DigiClock(QWidget *parent)
    : QLCDNumber(parent)
{
   
    QPalette p = palette();
    p.setColor(QPalette::Window,Qt::blue);
    setPalette(p);
    setWindowFlags(Qt::FramelessWindowHint);//设置一个没有面板和窗体栏的窗体
    setWindowOpacity(0.5);//设置窗体透明度
    QTimer* Timer = new QTimer(this);//新建一个定时器
    connect(Timer,SIGNAL(timeout()),this,SLOT(ShowTime()));
    Timer->start(1000);//启动定时器
    ShowTime();//初始化时间显示
    resize(150,60);//设置窗口大小
    ShowColon = true;
}

DigiClock::~DigiClock() {}

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();
    }
}

void DigiClock::ShowTime()
{
    QTime Time = QTime::currentTime();
    QString Text = Time.toString("hh:mm");
    if(ShowColon)
    {
        Text[2] = ':';
        ShowColon = false;
    }
    else
    {
        Text[2] = ' ';
        ShowColon = true;
    }

    display(Text);

}




main.cpp

#include "digiclock.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DigiClock w;
    w.show();
    return a.exec();
}

运行图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053145.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

奇迹世界2单机版安装教程+GM工具+无虚拟机

今天给大家带来一款单机游戏的架设&#xff1a;奇迹世界2单机版。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整…

SAP与航信爱信诺电子发票系统集成案例

一、项目环境 某药业有限公司是一家以医药产业为主营、资本经营为平台的大型民营企业集团。公司成立迄今&#xff0c;企业经营一直呈现稳健、快速发展的态势集团总销售额超40亿元。 为融入企业内部的ERP、CRM等系统&#xff0c;支持自动化记账、对账流程&#xff0c;推动企…

面向未来的数据治理趋势与挑战

面向未来的数据治理趋势与挑战可以归纳为以下几个方面&#xff1a; 数据治理趋势 战略地位提升&#xff1a; 数据治理正在从传统的支持性角色转变为企业的战略核心&#xff0c;与业务战略紧密结合&#xff0c;以驱动数据驱动的决策和创新。人工智能与机器学习的应用&#xff…

什么是光伏气象站——仁科测控

【仁科测控&#xff0c;品质保障】光伏气象站&#xff0c;‌这一专门为光伏发电系统设计的监测设备&#xff0c;‌其核心能力在于精确且实时地捕捉那些对光伏发电效率产生关键影响的气象因素。‌这些数据不仅为评估光伏电站的发电性能提供了重要依据&#xff0c;‌更是优化运维…

VueX 使用

1.简介 就是用来多组件共享数据的实现用的 2.使用VueX 因为使用的是vue2 所以下的是vuex3 若是vue3 必须下的是 vue4 npm i vuex3 3.搭建环境 1.创建 src/store/index.js //该文件用于创建一个Vuex中最为核心的store//引入VueX import Vuex from vuex import Vue from vu…

springboot功能模块之POI操作Excel

一、前言 文件的导入导出: 这个功能主要就是帮助我们的用户能够快速的将数据导入到数据库中,不用在自己手动的一条一条的将数据新增到我们的数据库中.同时又能够方便我们能够将数据导出之后打印出来给领导们查看.不用非得带着电脑这里那里的跑.非常实用的功能. 文件的导入导…

Android低内存设备系统优化

切记,所有的优化都遵循一条准则: 空间换时间,时间换空间。 一、前言 我们为什么会觉得卡顿、不流畅? 卡顿等性能问题的最主要根源都是因为渲染性能,Android系统很有可能无法及时完成那些复杂的界面渲染操作。Android系统每隔16ms发出信号,触发对UI进行渲染,如果每次渲染…

android13顶部状态栏里面调节背光 背景闪烁问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.问题分析 3.代码分析 4.代码修改 5.彩蛋 1.前言 android13顶部状态栏里面调节背光, 背景闪烁问题,会出现画面不全问题,如下图 2.问题分析 这里看起来是由于隐藏的时候,界面显示是一个渐变的隐藏,但是后面的背景又是…

NVDLA专题12:具体模块介绍——LUT Programming

LUT编程 LUT是NVDLA中SDP/CDP的实例&#xff0c;用于模拟神经网络中的非线性函数(Sigmoid/TanH/LRN等。)。我们知道&#xff0c;LUT精度高度依赖于LUT entry和曲线的斜率变化:LUT entry越多&#xff0c;精度越高。另一方面&#xff0c;曲线的斜率变化越大&#xff0c;越难模拟…

怎么把pdf文件转html格式?5个pdf转html方法学起来(超简单)

在信息化快速发展的今天&#xff0c;各种文件格式层出不穷。作为一种常见的文件格式&#xff0c;PDF因其跨平台的优势被广泛应用于文档的分享与存储。然而&#xff0c;随着网页技术的进步&#xff0c;越来越多的用户希望将PDF文档转换为HTML格式&#xff0c;以便在网页上进行编…

第三方软件测评中心分享:软件系统测试内容和作用

近年来&#xff0c;随着信息技术的迅猛发展&#xff0c;软件系统的应用范围不断扩大。保证软件质量的关键措施之一就是软件系统测试。软件系统测试是指在软件开发生命周期中&#xff0c;通过一系列特定的测试活动来验证和确认软件系统的性能、功能及安全性&#xff0c;确保软件…

使用大模型撰写移动机器人模拟器(CoppeliaSim、Gazebo、MORSE和Webots)的定量比较研究报告

使用大模型辅助阅读移动机器人模拟器&#xff08;CoppeliaSim、Gazebo、MORSE和Webots&#xff09;的定量比较研究报告-CSDN博客 表格总结 以下是对全文进行学术性科学总结的一系列表格&#xff1a; 1. 摘要表格 类别描述文章标题如何选择移动机器人模拟器&#xff1a;对Copp…

Spring Boot实战:使用模板方法模式优化数据处理流程

概述 在软件开发过程中&#xff0c;我们经常需要处理各种各样的数据&#xff0c;这些数据可能来自不同的源&#xff0c;比如数据库、文件系统或者外部API等。尽管数据来源不同&#xff0c;但很多情况下处理这些数据的步骤是相似的&#xff1a;读取数据、清洗数据、转换数据格式…

easyexcel--导入导出实现自定义格式转换

自定义格式 我们在数据库设计的时候经常会有枚举类型&#xff0c;如0表示普通用户&#xff0c;1表示VIP用户等&#xff0c;这在excel导入的时候&#xff0c;我们会填普通用户而不是0&#xff0c;这样就需要用到自定义格式把普通用户转换成0&#xff0c;我写了一个通用的抽象类…

使用 C/C++访问 MySQL

目录 准备工作 尝试链接 MySQL Client MySQL 接口介绍 准备工作 保证 MySQL 服务有效。下载MySQL开发包&#xff08;可以在MySQL官网下载安装也可以在软件源安装&#xff09; MySQL 开发包通常会包含一些特定的头文件和库文件。您可以检查以下常见的路径&#xff1a; /us…

C++ 11 的新增特性

一.列表初始化 1.1 { }初始化 在C 11 中扩大了 大括号{ } 的使用范围&#xff0c;我们可以使用大括号初始化内置类型对象和自定义类型对象&#xff0c;可以在使用时加上 等于 &#xff0c;不加也可以&#xff0c;但是还是建议加上。 在初始化对象时我们就可以像以下方式初始化…

如何用Chatgpt制作流程图呢?

小说推文—— AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/流程图的本质&#xff0c;是对文本信息的整合组织&#xff0c;是对逻辑关系的可视化呈现。而大语言模型非常擅长从给定的…

C++策略模式:萧炎打架~

目录 策略模式步骤例子&#xff1a;萧炎使用技能打架给出UML图1&#xff1a;定义技能策略2&#xff1a;实现技能策略3&#xff1a;定义萧炎类4&#xff1a;萧炎遇到强劲的敌人5&#xff1a;战斗过程 策略模式 策略模式是一种行为设计模式&#xff0c;它定义了一系列算法&#…

学姐说,WebGIS面试八股文不会也得背!会!

本文全是干货&#xff0c;内容来一线GIS开发工程师&#xff0c;目前是中地数码集团、新中地GIS开发特训营高级讲师&#xff0c;从事GIS软件开发工作8年&#xff0c;拥有丰富的软件开发和项目研发经验&#xff0c;对webGIS、桌面GIS开发有较深研究&#xff0c;深谙GIS开发面试的…

玩转单例模式

目录 1. 饿汉式 2. 懒汉式 3. volatile解决指令重排序 4. 反射破坏单例模式 5. 枚举实现单例模式 6. 枚举实现单例模式的好处 7.尝试反射破坏枚举 所谓单例模式&#xff0c;就是是某个类的实例对象只能被创建一次&#xff0c;单例模式两种实现&#xff1a;饿汉式和懒汉…