QTday3消息弹框/计时器

news2024/10/7 14:34:09

闹钟小软件

 widget.cpp

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QDebug>
#include <QPushButton>
#include <QLabel>
#include <QTimer>
#include <QTimerEvent>
#include <QTime>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void timerEvent(QTimerEvent *e);//重写定时器事件函数

private:
    Ui::Widget *ui;
public:
    int timeId;
    bool isSettingAlarmClock = false;
private slots:
    void on_startBtn_clicked();
    void on_stopBtn_clicked();
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->stopBtn->setEnabled(false);
    ui->startBtn->setEnabled(true);
    ui->clockLineEdit->setEnabled(true);
    ui->textEdit->setEnabled(false);
    ui->textEdit->clear();
    isSettingAlarmClock = false;
    //开启定时器
    timeId = startTimer(1000);
}

void Widget::timerEvent(QTimerEvent *e){
    //如果定时器不是 timeId, 直接返回
    if(e->timerId() != timeId){
        return;
    }
    //刷新展示当前时间
    QTime sys_time = QTime::currentTime();
    QString time = sys_time.toString("hh:mm:ss");
    ui->currentTimeBtn->setText(time);
    //如果 设置闹钟标识为false 直接返回
    if(true !=isSettingAlarmClock){
        return;
    }
    //设置闹钟标识为true 判断是否到设置的闹钟时间, 是->播报声音或提示, 虚拟机播放不了声音,就只提示
    if(time == ui->clockLineEdit->text()){
        int ret = QMessageBox::information(this,"提示","闹钟时间到啦,赶紧起来电脑开机学习!!!",QMessageBox::Yes,QMessageBox::Yes);
        if(ret == QMessageBox::Yes){
            qDebug()<<"好的,我赶紧起来开电脑";
        }
        qDebug()<<"闹钟时间到了";
    }
}

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

void Widget::on_startBtn_clicked()
{
    if(ui->clockLineEdit->text().isEmpty() || ui->clockLineEdit->text().isNull()){
        int ret = QMessageBox::information(this,"提示","还没设置闹钟时间,来设置时间:比如:12:00:00",QMessageBox::Yes,QMessageBox::Yes);
        if(ret == QMessageBox::Yes){
            qDebug()<<"好的,我赶紧起来开电脑";
        }
        return;
    }
    ui->startBtn->setEnabled(false);
    ui->stopBtn->setEnabled(true);
    ui->clockLineEdit->setEnabled(false);
    ui->textEdit->setEnabled(false);
    ui->textEdit->setText("三更灯火五更鸡\n正式男儿读书时\n黑发不知勤学早\n白发方悔读书迟");
    this->isSettingAlarmClock = true;
}

void Widget::on_stopBtn_clicked()
{
    ui->stopBtn->setEnabled(false);
    ui->startBtn->setEnabled(true);
    ui->clockLineEdit->setEnabled(true);
    ui->textEdit->clear();
    ui->textEdit->setEnabled(false);
    ui->clockLineEdit->clear();
    isSettingAlarmClock = false;
}

/*
    程序启动: 停止按钮不可点击/开始按钮可点击/闹钟提示置空/闹钟edit置空/闹钟标识置为false
    1开启定时器tId_currentTime, 记时事件处理显示当前时间
    2点击开始按钮: 停止按钮可点击/开始按钮不可点击/闹钟提示文本设置/闹钟edit不可点击/闹钟标识置为true. 比较当前时间 == 编辑时间, 相同播报文字 否则不播报,
    3点击停止: 闹钟标识置为false 停止按钮不可点击/开始按钮可点击/闹钟提示置空/闹钟edit置空. 定时器不比较时间 只展示时间
*/

markdown笔记:思维导图不利于复习知识点和查找搜索, 所以写的markdown

 

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

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

相关文章

版本适配好帮手 Android SDK Upgrade Assistant / Android Studio Giraffe新功能

首先是新版本一顿下载↓&#xff1a; Download Android Studio & App Tools - Android Developers 在Tools中找到Android SDK Upgrade Assistant 可以在此直接查看SDK升级相关信息&#xff0c;不用跑到WEB端去查看了。 例如看一下之前经常要对老项目维护的android 12蓝牙…

umy-ui树形结构表格懒加载用法详解

效果图 在做后台时&#xff0c;使用的iview组件库中的树形表格&#xff0c;但数据量过大时会导致页面卡死&#xff0c;借助umy-ui的虚拟表格完美解决了数据量大卡顿的问题。 先放文档&#xff1a;http://www.umyui.com/umycomponent/u-table-column-api 安装 npm install u…

Ubuntu Server版 之 mysql 系列

Ubuntu 分 桌面版 和 服务版 桌面版 &#xff1a;有额外的简易界面 服务版&#xff1a;是纯黑框的。没有任何UI界面的可言 安装mysql 安装位置 一般按照的位置存放在 /usr/bin 中 sudo apt-get install mysql-server查看mysql的状态 service mysql status mysql 安全设置…

对原型、原型链的理解

在 JavaScript 中是使用构造两数来新建一个对象的&#xff0c;每一个构造函数的内部都有一个 prototype 属性&#xff0c;它的属性值是一个对象&#xff0c;这个对象包含了可以由该构造西数的所有实例共享的属性和方法。当使用构造函数新建一个对象后&#xff0c;在这个对象的内…

js加载和长任务

js加载和长任务 本文将讲解以下浏览器如何加载js&#xff0c;并介绍一些可以提高网页加载速度的方法。 Evaluate Script 如果我们在devtools的performance中分析过网站的加载性能&#xff0c;可能会看到一个很长的任务&#xff0c;叫做Evaluate Script. 在这种情况下&#x…

IDS(Intrusion Detection Systems)

计算机安全的三大中心目标是&#xff1a;保密性(Conf idential ity)、完整性(Integrity)、可用性(Availability)。 身份认证与识别、访问控制机制、加密技术、防火墙技术等技术共同特征就是集中在系统的自身加固和 防护上&#xff0c;属于静态的安全防御技术&#xff0c;缺乏主…

【微服务架构设计】微服务不是魔术:处理超时

微服务很重要。它们可以为我们的架构和团队带来一些相当大的胜利&#xff0c;但微服务也有很多成本。随着微服务、无服务器和其他分布式系统架构在行业中变得更加普遍&#xff0c;我们将它们的问题和解决它们的策略内化是至关重要的。在本文中&#xff0c;我们将研究网络边界可…

上门居家养老小程序社区养老小程序开发方案详解

居家养老管理社区养老小程序有哪些功能呢&#xff1f; 1.选择养老服务类型 医疗护理&#xff0c;家政服务预约&#xff0c;上门助浴、上门做饭&#xff0c;上门助餐&#xff0c;生活照护&#xff0c;康复理疗、精神慰藉、委托代办等。各项服务的详情介绍。 2.选择预约时间 选择…

Linux_NVR_SDK 编译应用 -基于iTOP-RK3568开发板

在源码 build/app 目录下有发布版本的 RKMPI 以及编译配置&#xff0c;目前的编译方式只支持 Cmake 脚本。如果要编译其他应用&#xff0c;可以参考 build/app/build/build.sh 脚本配置编译工具链。 以编译 RKMPI 应用程序为例&#xff0c;进行示范&#xff1a; 1. 使能 sdk…

BIM与GIS融合:公路设计施工信息化的创新解决方案

随着信息技术的不断发展和应用&#xff0c;建筑行业也迎来了数字化转型。BIM&#xff08;建筑信息模型&#xff09;和GIS&#xff08;地理信息系统&#xff09;作为建筑行业中的重要技术&#xff0c;它们的融合对于实现公路施工信息化具有重要意义。Bim技术可以提供精细的建筑信…

(无人机方向)ros小白之键盘控制无人机(终端方式)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一&#xff1a;配置pycharm的ros开发环境二&#xff1a;核心代码讲解三 效果演示XTDrone 四 完整代码 前言 ubuntu 18.04 pycharm ros melodic 做一个在终端中…

Android 截图功能实现

Android 截图功能实现 简介效果图功能实现1. 截取当前可见范围屏幕2. 截取当前可见范围屏幕&#xff08;不包含状态栏&#xff09;3. 截取某个控件4. 截取ScrollView5. 长截图6. 截屏动画效果7. 显示截屏结果&#xff0c;自动消失6. 完整代码 简介 在Android应用中开发截图功能…

Kibana+Prometheus+node_exporter 监控告警部署

下载好三个软件包 一、prometheus安装部署 1、解压 linxxubuntu:~/module$ tar -xvf prometheus-2.45.0-rc.0.linux-amd64.tar.gz 2、修改配置文件的IP地址 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever…

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04

xshell连接Windows中通过wsl安装的linux子系统-Ubuntu 22.04 一、安装linux子系统 1.1、 启动或关闭Windows功能-适用于Linux的Windows子系统 1.2 WSL 官方文档 使用 WSL 在 Windows 上安装 Linux //1-安装 WSL 命令 wsl --install//2-检查正在运行的 WSL 版本&#xff1a;…

LeetCode221.Maximal-Square<最大正方形>

题目&#xff1a; 思路&#xff1a; 这题是动态规划&#xff0c;但是不会写。想着判断dp的 <上&#xff0c;左&#xff0c;左上> 去了。发现只能这样最大只能判断面积为4的正方形因为只会判断另外三个方格。而要想判断更大的正方形那就需要递归操作了。那肯定会超时了。…

乌班图安装MySQL5.7时的故障求解

wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb dpkg -i mysql-apt-config_0.8.12-1_all.deb apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 apt update

微信小程序云开发快速入门

什么是云开发&#xff1f; 云开发是可以帮助我们快速成为全栈的一种后端云服务&#xff0c;采用的是Serverless的架构。开发者无须搭建服务器&#xff0c;可直接使用其中的云数据库、云存储、云函数等云服务基础功能。 那么这个时候你可能会想&#xff0c;这和现在的传统开发…

Educational Codeforces Round 152 (Rated for Div. 2) D题 1849D Array Painting

传送门 https://codeforces.com/contest/1849/problem/D D. Array Painting 题意 题解 分类讨论 这题的精髓在于欠债 用一个a0表示当前有没有负债 当前欠债最多为1 首先我们讨论, 在不欠债的情况下遇到0是怎么模拟的: 前面有能够产生贡献的12连通块 例如: 12110 很明显答案…

vue element ui el-tree 通过子节点反向递归查找父节点

今天做了一个项目采用的是element tree组件&#xff0c;要求子父节点不强关联&#xff0c;但是当我点击子节点时&#xff0c;会反向的选择所有的父节点&#xff0c;如下图&#xff1a; 当我点击电话时&#xff0c;往上一层的“电话”和“我的”均为父级以上的节点&#xff0c;全…

Practice1|1207. 独一无二的出现次数、1365. 有多少小于当前数字的数字、941. 有效的山脉数组

1207. 独一无二的出现次数 1.题目&#xff1a; 给你一个整数数组 arr&#xff0c;请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的&#xff0c;就返回 true&#xff1b;否则返回 false。 示例 1&#xff1a; 输入&#xff1a;arr [1,2,2,1,1,3…