Qt 0820作业

news2025/1/18 5:20:02

一、思维导图

二、闹钟

头文件代码

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTime>        //时间类
#include <QTimer>       //时间事件类
#include <QTimerEvent>  //定时器事件类
#include <QMouseEvent>  //鼠标事件类
#include <QPoint>       //向量类
#include <QMessageBox>  //对话框类
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    //重写timerEvent()函数的声明
    void timerEvent(QTimerEvent *e);

    /*鼠标事件函数声明*/
    void mousePressEvent(QMouseEvent *event) override;      //按下
    void mouseMoveEvent(QMouseEvent *event) override;       //移动

private slots:
    void on_startBtn_clicked();

private:
    Ui::Widget *ui;

    int id;     //定时器id
    QPoint p; //记录当前鼠标位置
    QTime alarmTime;    //闹钟时间
};
#endif // WIDGET_H

源文件代码

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowFlag(Qt::FramelessWindowHint);  //纯净窗口
    this->setAttribute(Qt::WA_TranslucentBackground);   //去黑框

    QDate sys_date = QDate::currentDate();
    QString date = sys_date.toString("yyyy年MM月dd日");
    ui->dataLabel->setText(date);
    //启动一个定时器
    id = startTimer(1000);  //每秒自动执行timerEvent()
}

Widget::~Widget()
{
    delete ui;
}

//定时器超时自动执行功能函数
void Widget::timerEvent(QTimerEvent *e)
{
    int count = 0;
    if(e->timerId() == id)
    {
        //获取系统时间
        QTime sys_time = QTime::currentTime();
        //时间转换字符串
        QString time = sys_time.toString("hh:mm:ss");
        //将系统时间放入lab
        ui->timeLabel->setText(time);
        //文本居中显示
        ui->timeLabel->setAlignment(Qt::AlignCenter);
        if(sys_time >= alarmTime && !alarmTime.isNull())
        {
            ui->textEdit->setText("时间到了!");
//            qDebug() << "时间到了";
            count++;
            if(count == 10) //闹钟响一分钟
            {
                alarmTime = QTime();
                ui->textEdit->setText("~~~~~~~");
                count = 0;
            }
        }
    }
}

//重写鼠标按下事件函数实现
void Widget::mousePressEvent(QMouseEvent *event)
{
    //当前窗口坐标
    p = event->pos();
}

//重写鼠标移动事件函数实现
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    //判断是否是左键按下
    if(event->buttons() == Qt::LeftButton)
    {
        //窗口移动
        this->move(event->globalPos() - p);
                        //全局坐标    当前窗口坐标
    }
}

void Widget::on_startBtn_clicked()
{
    alarmTime = QTime::fromString(ui->clockEdit->text(), "hh:mm:ss");
    if(alarmTime.isValid())
    {
        QMessageBox msg(QMessageBox::Information,
                        "提示",
                        "闹钟设置成功",
                        QMessageBox::Ok,
                        this);
        msg.exec();
    }
    else
    {
        QMessageBox msg(QMessageBox::Warning,
                        "警告",
                        "格式设置有误",
                        QMessageBox::Ok,
                        this);
        msg.exec();
    }
}

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

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

相关文章

无人机之故障排除篇

一、识别故障 掌握基本的无人机系统知识&#xff0c;遵循“先易后难、先外后内、先软件后硬件”的原则进行故障识别。一旦发现故障&#xff0c;立即停止飞行&#xff0c;避免进一步损坏。 二、机械部件维修 对于机身裂痕、螺旋桨损坏等情况&#xff0c;根据损坏程度更换相应部…

Tomcat目录详解

版本&#xff1a;Tomcat&#xff08;7.0.100&#xff09;&#xff08;linux版&#xff09; &#xff08;官网&#xff1a;Apache Tomcat - Welcome!&#xff09; 1.Tomcat是什么。 Tomcat是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。是Apache…

如何提高研发效能?思码逸 信通院给你答案

在市场竞争加剧的背景下&#xff0c;提高研发效能不仅是技术优化的需要&#xff0c;更是企业生存与发展的战略要求。在 2024 年伊始&#xff0c;北京思码逸科技有限公司&#xff08;简称“思码逸”&#xff09;携手合作伙伴启动了 DevData 2024 研发效能基准调研&#xff0c;并…

以简单的例子从头开始建spring boot web多模块项目(四)-多模块工具类

目的是为了验证主工程调用工具工程。 1、新建模块&#xff0c;名称为WebTool 同样为Maven Archetype&#xff0c;类型为 org.apache.maven.archetypes:maven-archetype-quickstart 2、修改pom.xml 增加spring-boot-starter的依赖。 <dependency><groupId>org.spri…

CISAW认证考试的时间是多久

CISAW&#xff0c;即中国信息安全保障人员&#xff0c;是中国信息安全认证与审查中心进行权威认证的缩写。它是全国范围内最为权威、最高端的信息安全认证之一。作为信息安全领域的重要认证&#xff0c;对于从事网络安全工作的人员来说具有极其重要的意义。因此&#xff0c;备考…

regeorg搭建socket隧道

regeorg搭建socket隧道 工具安装 下载地址 https://github.com/sensepost/reGeorg环境配置 说明 reGeorg提供了PHP、ASPX、JSP脚本&#xff0c;直接访问显示“Georg says, ‘All seems fine’”&#xff0c;表示脚本运行正常。# 攻击过程 vps:192.168.110.131 web服务器&a…

游戏内音乐盒、游戏内实时翻译外国队友语音的实现思路

奈何自己不能精通多个语言&#xff0c;在外服游戏的时候经常遇到老外叽里咕噜说一堆话&#xff0c;不知道讲些什么&#xff0c;可能有俄语、法语等&#xff0c;这时候有一个可以在游戏内实时翻译语言的工具就好了。 在本文中&#xff0c;我们将探讨如何提取游戏内的音频、队友…

Unity动画模块 之 3D模型导入基础设置 Rig页签

​本文仅作笔记学习和分享&#xff0c;不用做任何商业用途本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ 1.Rig页签 Rig 选项卡 - Unity 手册&#xff0c;rig是设置骨骼与替身系统的&#xff0c;工作流程如下 Avatar是什么…

OpenAI 将向企业开放 GPT-4o 模型定制版

OpenAI 最近发布了一项新功能&#xff0c;使企业客户可以通过微调技术定制 GPT-4o 模型&#xff0c;从而应对日益激烈的人工智能竞争&#xff0c;并展示其投资回报。这一新功能的推出使得企业能够使用自己的数据对 GPT-4o 模型进行个性化调整&#xff0c;以满足他们的特定需求和…

学习设置echarts 折线图使用相关参数的方法整理

学习设置echarts 折线图使用相关参数的方法整理 折线图堆叠设置为不堆叠的方法 折线图堆叠设置为不堆叠的方法 官网是这样的&#xff0c;但是不需要这种堆叠形式的如下图&#xff1a; 第2条数据值 第1条数据值 第2条数据值 第3条数据值 第2条数据值 第3条数据值 需要改成…

通讯专题-RS232

1 概述 RS-232是一种点对点通信协议&#xff0c;这意味着每个数据信号沿一根导线传输&#xff08;差分信号使用两根导线传输一个数据信号&#xff09;&#xff0c;RS-232为全双工方式运行&#xff08;总线可同时发送和接收数据&#xff09;。 根据新修订的标准为容性负载为2500…

Servlet技术介绍与实践

Servlet技术是Java Web开发的核心组件之一&#xff0c;它提供了一种在Web服务器上执行Java代码的机制。自Servlet API首次发布以来&#xff0c;它已成为构建动态Web应用程序的基础。本文将深入探讨Servlet的工作原理、生命周期、关键特性&#xff0c;并通过示例代码展示如何在实…

精通推荐算法28:行为序列建模之DSIN— 基于Session建模用户行为序列

1 行为序列建模总体架构 2 DSIN背景 阿里巴巴研究人员发现&#xff0c;用户行为序列是基于Session的。Session内兴趣相似且集中&#xff0c;Session间则兴趣差异较大。Session按照时间间隔来划分&#xff0c;比如 30分钟。如图5-11所示为真实场景下的多个用户行为Session。 图…

【NI国产替代】NI‑9235四分之一桥应变计,8通道C系列应变/桥输入模块

10 kS/s/ch&#xff0c;120 Ω四分之一桥应变计&#xff0c;8通道C系列应变/桥输入模块 NI‑9235可同步测量所有通道的动态应变&#xff0c;从而实现了高速同步测量。 该功能对于需要在特定时刻对多个通道进行比较的应用&#xff08;例如冲击测试&#xff09;非常重要。\n\nNI…

TCP协议段中的六个标志位

目录 ACK SYN RST FIN PSH URG TCP报文格式中的六个标志位由6个比特构成&#xff0c;在通信双方基于TCP协议互相发送报文数据时可以通过报头中标志位来区别对方发送的报文数据的请示。 ACK 确认号是否有效。 接收端对所收到的报文进行检查&#xff0c;若未发现错误&…

在控件graphicsView中实现绘图功能

文章目录 基础夯实&#xff1a;效果展示&#xff1a;一、目标&#xff1a;二、遇到的问题三、实例代码customgraphicsview.hcustomgraphicsview.cppmainwindow.hmainwindow.cppmian.cpp 基础夯实&#xff1a; 在Qt框架中&#xff0c;QGraphicsView 是一个非常强大的控件&#…

读论文《Temporal Graph Networks for Deep Learning on Dynamic Graphs》

论文地址&#xff1a;[2006.10637] Temporal Graph Networks for Deep Learning on Dynamic Graphs (arxiv.org) 项目地址&#xff1a;GitHub - twitter-research/tgn: TGN: Temporal Graph Networks 作者提出了一种名为Temporal Graph Networks&#xff08;TGNs&#xff09;…

解决selenium 常见版本不兼容问题

目录 1、解决urllib3库不兼容的问题 2、解决chromedriver与浏览器版本不兼容的问题 【测试环境】 selenium&#xff1a;3.141.0Python&#xff1a;3.10 1、解决urllib3库不兼容的问题 背景&#xff1a;在尝试启动selenium时代码出现ValueError错误&#xff0c;代码如下&am…

Excel的使用总结

目录 1、汇总公式&#xff1a;TEXTJOIN 2、excel中选择某个区域的方法 3、excel中如何在复制的时候&#xff0c;不将公式一起复制过去 4、想要自动填充某个区域的值的方法 1、汇总公式&#xff1a;TEXTJOIN TEXTJOIN 函数 - Microsoft 支持 例&#xff1a;TEXTJOIN("…

下拉表格选择器ReTableSelect组件(API)

组件实现基于 Vue3 + Element Plus + Typescript,同时引用 vueUse + lodash-es + tailwindCss (不影响功能,可忽略) 基于ReTable和Popover组件封装的下拉表格选择器组件,支持本地分页以及远程请求两种方式。 交互与展示尽量的与ElSelect保持一致。 下拉表格选择器ReTableSel…