当前位置: 首页 > news >正文

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

综合实例-电子时钟

  • 知识点
  • 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_OBJECTpublic: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.mrgr.cn/news/1910.html

相关文章:

  • 24/8/17算法比记 PPO算法
  • 【OCR 学习笔记】二值化——局部阈值方法
  • LeetCode501 二叉搜索树中的众数
  • 第5节:Elasticsearch核心概念
  • 快速排序(Java实现)
  • 阿里声音项目Qwen2-Audio的部署安装,在服务器Ubuntu22.04系统——点动科技
  • git 使用
  • 海康VisionMaster使用学习笔记10-VM流程操作
  • [Qt][Qt 多线程][上]详细讲解
  • 手机回合制策略游戏推荐:《文明6》手机版游戏分享
  • 搭建内网开发环境(三)|基于nexus搭建docker私服
  • 实现异形(拱形)轮播图
  • Processing中库和导出PDF内容
  • 【Android 笔记】Android APK编译打包流程
  • React前端面试每日一试 8.什么是React Portals?
  • Git基础知识
  • 【Linux】线程安全的单例模式 STL和智能指针的线程安全问题 其他常见的各种锁 读者写者模型(线程的周边话题)
  • go语言协程之间的同步
  • 解决k8s进入dashboard页面,浏览器提示连接不是私密链接的问题
  • 图像处理之 Gamma LUT