C++,Qt学习 2024.9.10

news2024/12/26 23:11:05

制作ui界面实现:模拟定时闹钟功能

启动后,lab实时获取系统时间,当系统时间走到设置的时间时,语音播报下方lineEdit中的内容,启动前取消按键不可用,启动后除了取消按键可用其他部分都设为不可用,播报语音开始时重置回开始前的状态  。

.h文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>   //定时器类
#include <QTime>    //时间类
#include <QTimerEvent>  //定时器事件类
#include <QDateTime> //日期时间类
#include <QTextToSpeech>  //语音播报

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

private slots:
    void on_pushButton_clicked();

    void timeout_slot();    //自定义处理超时信号槽函数

    void on_pushButton_2_clicked();

private:
    Ui::Widget *ui;

    //定义一个定时器变量
    QTimer t1;
    QTextToSpeech *textToSpeech;  // 添加 QTextToSpeech 对象
};
#endif // WIDGET_H
.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
    , textToSpeech(new QTextToSpeech(this))  // 初始化 QTextToSpeech
{
    ui->setupUi(this);

    //绑定定时器信号与槽
    connect(&t1,&QTimer::timeout,this,&Widget::timeout_slot);

    //将停止按钮初始状态设置为不可用
    ui->pushButton_2->setEnabled(false);
}

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


void Widget::on_pushButton_clicked()
{
    //启动一个计时器
    t1.start(1000);

    //将自己设置为不可用
    ui->pushButton->setEnabled(false);

    //将取消按钮设置为可用
    ui->pushButton_2->setEnabled(true);

    //将两个lineEdit设置为不可用
    ui->lineEdit->setEnabled(false);

    ui->lineEdit_2->setEnabled(false);

}

void Widget::on_pushButton_2_clicked()
{
    //关闭计时器
    t1.stop();

    //将启动按钮设置为可用
    ui->pushButton->setEnabled(true);

    //将自己设置为不可用
    ui->pushButton_2->setEnabled(false);

    //将时间显示label清空
    ui->label->clear();

    //将两个lineEdit设置为可用
    ui->lineEdit->setEnabled(true);

    ui->lineEdit_2->setEnabled(true);
}


//自定义超时函数
void Widget::timeout_slot()
{
    int count=0;
    //获取系统时间
    QTime sysTime=QTime::currentTime();
    //将QTime类对象转变成字符串
    QString tm=sysTime.toString("hh:mm:ss");
    //将时间展示再ui界面上
    ui->label->setText(tm);
    //设置标签居中显示
    ui->label->setAlignment(Qt::AlignHCenter);

    //设置语音播报功能
    if(ui->lineEdit->text()==ui->label->text())
    {
        //当显示的系统时间等于设置时间,语音播报lineEdit2的内容
        textToSpeech->say(ui->lineEdit_2->text());
        count=1;
    }
    if(count==1)
    {
        //关闭计时器
        t1.stop();

        //将启动按钮设置为可用
        ui->pushButton->setEnabled(true);

        //将停止设置为不可用
        ui->pushButton_2->setEnabled(false);

        //将时间显示label清空
        ui->label->clear();

        ui->lineEdit->clear();

        //将两个lineEdit设置为可用
        ui->lineEdit->setEnabled(true);

        ui->lineEdit_2->setEnabled(true);

    }
}

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

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

相关文章

Java 创建对象方法的演变

1、普通 Java 代码 public class Rectangle {private int width;private int length;public Rectangle() {System.out.println("Hello World!");}public void setWidth(int widTth) {this.width widTth;}public void setLength(int length) {this.length length;}…

个人随想-如何开发一个code agent

随着sonnet的普及&#xff0c;现在的开发确实可以达到事半功倍的效果&#xff0c;再加上cursor、claude dev等工具的加持&#xff0c;现在的软件开发&#xff0c;确实门槛降低了很多&#xff0c;我们可以快速的让ai给我们大量的提示、重构、单元测试、explain甚至是完全用自然语…

c++指针和引用专题

一 基本概念 图解C++指针与引用的区别_指针与引用 图解-CSDN博客https://blog.csdn.net/shang_0122/article/details/104755481 为什么C+

房屋租赁|基于springboot的房屋租赁管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#x…

方位对称性+均匀分布=交叉极化和同极化不相关

这个推导是一种方为对称散射矩阵的均匀分布&#xff0c;对于多种方位对称性的散射矩阵&#xff0c;均匀分布。可以看作该模型的简单叠加。从而交叉极化和同极化不相关

PhotoZoom Classic 9.0.2中文版新功能介绍及PhotoZoom 9使用教程

PhotoZoom Classic 9.0.2中文版简介 PhotoZoom Classic 9.0.2中文版是一款新颖的、技术上具有革命性的对数码图片进行放大的工具。通常的工具对数码图片进行放大时&#xff0c;总会降低图片的品质&#xff0c;而这款软件使用了S-SPLINE技术(一种申请过专利的&#xff0c;拥有自…

Word文档的读入(3)

逐个读取答题卡后&#xff0c;我们可以访问Word文档&#xff08;Document&#xff09;中的 .paragraphs 属性&#xff0c;来获取文档中的段落列表。段落列表的组成元素是所有的段落对象&#xff0c;可以使用索引定位到指定的段落对象。 完善代码&#xff08;读取学生学号所在的…

FFmpeg 7.0 版本 “Dijkstra”的特点概述

FFmpeg 7.0 FFmpeg 官网:https://ffmpeg.org/FFmpeg 官网更新日志,2024.4.5 号发布代号"Dijkstra"的 7.0 版本的 FFmpeg,如下截图: 为什么叫 Dijkstra“Dijkstra” 指的是艾兹格戴克斯特拉(Edsger Wybe Dijkstra),他是一位荷兰计算机科学家,对计算机科学领域…

为什么Java已经不推荐使用Stack了?

为什么不推荐使用Stack Java已不推荐使用Stack&#xff0c;而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低&#xff1a;是因为 Stack 继承自 Vector&#xff0c; 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目&#xff0c;很难在原有的基础上进行优化&…

多目标优化算法求解WFG(Walking Fish Group)测试函数

WFG&#xff08;Walking Fish Group&#xff09;测试函数套件是一组用于多目标优化的基准测试问题&#xff0c;由Simon Huband, Luigi Barone, Lyndon While和Phil Hingston提出。这些测试问题旨在提供一个全面的测试平台&#xff0c;以评估多目标优化算法的性能。WFG测试集包含…

操作系统 --- 线程(Threads)概念 多线程模型 线程控制与组织

零、学习路线 一、线程的引入&#xff0c;什么是线程&#xff0c;为什么要引入线程&#xff1f; 如果说&#xff0c;在OS中引入进程的目的是为了使多个程序能并发执行&#xff0c;以提高资源利用率和系统吞吐量&#xff0c;那么&#xff0c;在操作系统中再引入线程&#xff0c…

[网鼎杯 2020 朱雀组]Nmap 历程记录

分析&#xff1a;根据题目名称知道本题肯定会涉及nmap的使用&#xff0c;访问web页面 扫描自己,发现没啥有用的信息&#xff0c;他这里每扫一个主机会把扫描信息存在一个新的文件里&#xff0c;简单试了一下传的参数&#xff0c;也没发现sql注入 这个地方提供的参数会被nmap去拼…

新版idea java_home报错 以及markdown插件无法使用

报错&#xff1a;The environment variable JAVA_HOME(with the value of does not point to a valid JVM&#xff09; 1.检查java环境发现换成jdk8 或者jdk17 都没有问题&#xff0c;但是idea还是报错 可能是由于idea界面采用新技术JCEF缺少环境&#xff0c;我的idea版本是20…

从腾讯大模型的「实用」路线,我们看到了企业应用AI的新方向

「现在每家公司都是 AI 公司&#xff0c;但引入 AI 之后&#xff0c;利润真的能提高吗&#xff1f;」 在针对 Transformer 作者、Cohere CEO Aidan Gomez 的一次采访中&#xff0c;播客主持人 Harry Stebbings 问出了这样一个问题。 Stebbings 提到&#xff0c;现在很多公司都…

赎金信--力扣383

赎金信 题目思路一方法一&#xff1a;哈希表思路二方法二 数组 题目 思路一 我们使用哈希表map的思路&#xff0c;A能不能由B组成&#xff0c;说明B包含的元素个数要大于等于A。 所以我们先利用map的key和value分别对magazine中的出现的字符以及出现的次数存储起来。 然后我们…

力扣题解2552

大家好&#xff0c;欢迎来到无限大的频道。 今天和大家分享的是2552的题解思路。 题目描述&#xff1a; 统计上升四元组 一个长度为 n 下标从 0 开始的整数数组 nums &#xff0c;它包含 1 到 n 的所有数字&#xff0c;请你返回上升四元组的数目。 如果一个四元组 (i, j, …

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了&#xff0c;提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic&#xff0c;并且topic没有被手动创建过 R…

智慧教室无纸化方案应用领域和技术实践探究

智慧教室无纸化应用场景 智慧教室无纸化方案在多个领域得到了广泛应用&#xff0c;主要体现在教育领域&#xff0c;但随着技术的发展和应用的深入&#xff0c;其应用范围也在逐渐扩大。以下是一些主要的应用领域&#xff1a; 一、教育领域 课堂教学&#xff1a; 中小学数学课…

BFS迷宫最小路径问题

给定一个迷宫&#xff0c;0表示空地可以走&#xff0c;1表示墙壁不能穿越&#xff1b;在迷宫中可以向&#xff08;上下左右&#xff09;四个方向行进&#xff1b; 找到从左上角到右下角的最短路径&#xff0c;并计算最短路径的长度。 迷宫示例如下&#xff1a; 算法步骤&…

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析

org.aspectj.apache.bcel.classfile.ClassFormatException 深度解析 ### 概述 在前端开发和Java后端交互的复杂环境中&#xff0c;org.aspectj.apache.bcel.classfile.ClassFormatException 作为一个难以预测的异常&#xff0c;时常给开发者带来困扰。这个异常主要与 AspectJ—…