Qt 简单闹钟

news2024/11/26 16:35:06
//wiget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTime>   //时间类
#include <QTimer>  //定时器类
#include <QTextToSpeech>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void time_slot1();  //自定义处理timeout信号的槽函数
    void time_slot2();

private slots:
    void on_startbtn_clicked();

    void on_stopbtn_clicked();

private:
    Ui::Widget *ui;
    //定义一个定时器指针,基于类对象版本的定时器
    QTimer *timer;
    QTimer *timer_timeEdit;
    //定义一个播报员
    QTextToSpeech *speecher;

    int flag = 0;
};
#endif // WIDGET_H


//main.cpp
#include "widget.h"

#include <QApplication>

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


//widget.cpp


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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //实例化定时器
    timer = new QTimer(this);
    //启动定时器
    timer->start(100);  //从此时起,该定时器会每隔1秒钟的时间发射一个timeout的信号
    //将该定时器的timeout信号连接到自定义的槽函数中
    connect(timer,&QTimer::timeout,this,&Widget::time_slot1);

    speecher = new QTextToSpeech(this);
    //设置定时行编辑器的格式
    ui->timeEdit->setAlignment(Qt::AlignCenter);//标签文本对齐方式 居中
    ui->timeEdit->setFont(QFont("微软雅黑",15));

}

Widget::~Widget()
{
    delete ui;
}
//自定义处理timeout信号的槽函数
void Widget::time_slot1()
{

    //调用QTime的静态成员函数获取当前系统时间
    QTime sys_time = QTime::currentTime();

    //获取时、分、秒
//    int hour = sys_time.hour();
//    int minute = sys_time.minute();
//    int sec = sys_time.second();
    //将时间类对象调用函数转化为字符串
    QString t = sys_time.toString("hh:mm:ss");
    //时间字符串t展示到ui界面的lab中
    ui->time_label->setText(t);
    ui->time_label->setAlignment(Qt::AlignCenter);//标签文本对齐方式 居中
    ui->time_label->setFont(QFont("微软雅黑",20));
    if(flag == 0)
    {
        ui->timeEdit->setText(ui->time_label->text());
        flag = 1;
    }
}
//处理时间行编辑器的定时器的timeout信号
void Widget::time_slot2()
{
    if(ui->timeEdit->text() == ui->time_label->text())
    {
        speecher->say(ui->textEdit->toPlainText());
    }
}

void Widget::on_startbtn_clicked()
{
    //启动后时间文本编辑器、文本编辑器和启动按钮将不可用
    ui->startbtn->setEnabled(false);
    ui->timeEdit->setEnabled(false);
    ui->textEdit->setEnabled(false);

    timer_timeEdit = new QTimer(this);
    timer->start(100);  //从此时起,该定时器会每隔1秒钟的时间发射一个timeout的信号
    connect(timer,&QTimer::timeout,this,&Widget::time_slot2);


}

void Widget::on_stopbtn_clicked()
{
    //停止后时间文本编辑器、文本编辑器和启动按钮可用
    ui->startbtn->setEnabled(true);
    ui->timeEdit->setEnabled(true);
    ui->textEdit->setEnabled(true);

}

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

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

相关文章

YoloV8改进策略:轻量级Slim Neck打造极致的YoloV8

文章目录 摘要Yolov8官方结果源码改进方法测试结果总结摘要 论文链接:https://arxiv.org/ftp/arxiv/papers/2206/2206.02424.pdf 作者研究了增强 CNN 学习能力的通用方法,例如 DensNet、VoVNet 和 CSPNet,然后根据这些方法的理论设计了 Slim-Neck 结构。 使用轻量级卷积…

机械制图(CAD)

目录 第一课&#xff08;80分钟&#xff09; 第二课&#xff08;80分钟&#xff09; 力啥学机械制图&#xff1f;我们的工厂要加工机械&#xff0c;而加工机械零件前&#xff0c;我们要先给工人图纸来看,工人才知道该怎样加工&#xff0c;所以我们今天就来学习下怎样画出符何…

任意文件读取和漏洞复现

任意文件读取 1. 概述 一些网站的需求&#xff0c;可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过&#xff0c;就可以查看或下载任意文件。这些文件可以是漂代码文件&#xff0c;配置文件&#xff0c;敏感文件等等。 任意文件读取会造成&…

电脑开机操作系统引导过程

电脑开机时操作系统引导&#xff1a; CPU首先执行主存中ROM中的引导程序。 将磁盘的第一块——主引导记录(MBR)读入到内存中&#xff0c;执行磁盘引导程序&#xff0c;扫描分区表。 在主分区(C盘)执行分区引导程序。 在C盘根目录下找到完整的操作系统初始化程序并执行。

系统虚拟机(VM)

系统虚拟机&#xff1a;将一台物理机器虚拟化为多台虚拟机&#xff0c;每个虚拟机上都可以运行一个独立的操作系统&#xff0c;由虚拟机管理程序(VMM)来管理。 第一种直接运行在硬件上&#xff0c;可以直接分配物理资源&#xff0c;性能更好&#xff0c;可支持更多的虚拟机&am…

ModaHub魔搭社区专访百度智能云李莅:企业需要的是一款企业级向量数据库还是向量引擎?

ModaHub魔搭社区&#xff1a;虽然您认为它是刚需&#xff0c;但也有人认为我可能不是需要一款企业级的向量数据库&#xff0c;而是需要一个向量引擎。我可以在传统的数据库上加一个向量引擎&#xff0c;然后它就变成了一款向量数据库&#xff0c;您觉得他们这样的想法是可行的吗…

布隆过滤器Moudule安装

Redis帮我们实现了布隆过滤器算法&#xff0c;可以通过module方式安装&#xff0c;直接使用&#xff0c;其实可以自己实现这样的算法。 安装遇到的问题&#xff0c;通过官网下载的zip或者git下载的源码&#xff0c;都是master版本&#xff0c;make会出问题&#xff0c;报错文件…

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…

stack和queue容器

1 stack 基本概念 概念&#xff1a;stack是一种先进后出(First In Last Out,FILO)的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为 栈中进入数据称为 — 入栈 push 栈中弹出数据称为 — 出栈 pop 2 stack 常用…

Linux——进程间信号(超级详解!!)

索引 一.初始信号1.什么是信号2.前后台进程3.信号的种类4.信号的管理 二.信号产生前1.验证键盘是可以产生信号的2.通过系统调用接口发送信号3.由软件条件产生信号4.硬件异常产生信号5.总结6.core dump 信号产生中1.信号在内核中的表示2.信号集操作函数 信号产生后1.了解内核态和…

Java Web3J :使用web3j监听、查询、订阅智能合约的事件

前面有文章写如何使用Docker-compose方式部署blockscout浏览器+charts图表,区块链浏览器已经部署成功了,同时我们在链上增加了治理投票流程,如何实时的把治理事件快速同步到浏览器呢?这时就想到了Web3J来监听智能合约的事件,来达到同步事件的效果 目录 Web3J简介功能简介m…

lv3 嵌入式开发-4 linux shell命令(进程管理、用户管理)

目录 1 进程处理相关命令 1.1 进程的概念 1.2 查看进程的命令 1.3 发送信号命令 2 用户管理相关命令 2.1 用户管理相关文件介绍 2.2 用户管理相关命令介绍 1 进程处理相关命令 1.1 进程的概念 进程的概念主要有两点&#xff1a; 进程是一个实体。每一个进程都有它自己…

【计算机组成原理】第一章 计算机概述

1.冯诺依曼结构&#xff1a; 计算机由运算器、控制器、存储器、输入设备、输出设备五大部件组成 运算器和控制器称为CPU&#xff1b;CPU和存储器称为计算机主机&#xff1b;其余输入、输出设备、外存储器称为计算机外部设备采用二进制表示数据和指令 指令由操作码&#xff08;…

20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转

登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…

golang 通用的 grpc http 基础开发框架

go-moda golang 通用的 grpc http 基础开发框架仓库地址: https://github.com/webws/go-moda仓库一直在更新,欢迎大家吐槽和指点 特性 transport: 集成 http&#xff08;echo、gin&#xff09;和 grpc。tracing: openTelemetry 实现微务链路追踪pprof: 分析性能config: 通用…

CDN+GitHub搭建图床

前期搭建博客的时候&#xff0c;老是遇到图片无法加载、加载出错等等问题&#xff0c;很是烦恼。于是想搭建一个图床&#xff0c;进行个人博客图片的存储、显示使用。 ​ 利用GitHubjsDelivrPicGo搭建免费图床&#xff0c;CDN图床就是这么朴实无华&#xff0c;是基于免费CDN与免…

l8-d4 IP地址与端口号

一、分类IP 1.IP 地址及其表示方法 例&#xff1a; 2.IP 地址采用 2 级结构 3.分类的 IP 地址 任意一个IP地址我们都可以迅速的得出类别&#xff0c;并计算得出网络号 当一个主机通过两个网卡同时连接到两网络时&#xff0c;也就是该主机同时拥有两个IP地址&#xff0c;该主机…

【Java】网络通信基础

网络通信基础 IP地址概念格式特殊IP 端口号概念格式注意事项 认识协议概念作用知名协议的默认端口五元组协议分层OSI七层模型TCP/IP五层(或四层)模型网络设备所在分层网络分层对应封装和分用 IP地址 概念 IP地址主要用于标识网络主机、其他网络设备&#xff08;如路由器&…

简单入门--无约束线性模型预测控制

简单入门--无约束模型预测控制 一、模型预测控制是什么&#xff1f;二、无约束线性模型预测控制1. 表达式2. 最优解推导3.MATLAB代码 导读&#xff1a;下棋有高手和菜鸟&#xff0c;高手往往预测未来多步棋局发展&#xff0c;提前布局&#xff0c;而菜鸟只根据当前棋局做选择&a…

构建高效实时数据流水线:Flink、Kafka 和 CnosDB 的完美组合

当今的数据技术生态系统中&#xff0c;实时数据处理已经成为许多企业不可或缺的一部分。为了满足这种需求&#xff0c;Apache Flink、Apache Kafka和CnosDB等开源工具的结合应运而生&#xff0c;使得实时数据流的收集、处理和存储变得更加高效和可靠。本篇文章将介绍如何使用 F…