12月12日
2023-12-13 06:53:29
写一个闹钟窗口,要求能显示系统时间,能设置闹铃,到时间后语音播报文字
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimerEvent> //定时器事件类
#include <QTime> //时间类
#include <QTextToSpeech> //文本转语音类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void my_signal(); //自定义信号
private slots:
void on_pushButton_clicked(); //按钮点击函数
void timerEvent(QTimerEvent *e); //定时器超时时自动引用函数
void my_slot(); //自定义槽函数
private:
Ui::Widget *ui;
int id;
int t;
QString alarm; //定义时间
QTextToSpeech *speecher; //定义语音播报者
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
ui->label_3->setAlignment(Qt::AlignTop); //设置lable_3的文字在最顶端
id = startTimer(1000); //id计时器一秒钟
speecher = new QTextToSpeech(this); //实例化语音播报者
connect(this,&Widget::my_signal,this,&Widget::my_slot); //连接自定义信号与自定义的槽
}
Widget::~Widget()
{
delete ui;
}
void Widget::my_slot() //自定义的槽函数,让语音播报者播放五次,三秒钟一次
{
int i=0;
while(i<5)
{
t = startTimer(3000);
speecher->say(ui->label_3->text()); //语音播报者开始朗读
i++;
}
}
void Widget::on_pushButton_clicked()
{
alarm = ui->lineEdit->text(); //设置alarm的值,用于定时闹钟
}
void Widget::timerEvent(QTimerEvent *e) //当定时器超时时,自动调用该函数
{
if(e->timerId()==id) //当定时器为id时
{
QTime sys_time = QTime::currentTime(); //获取系统时间
QString s = sys_time.toString("hh::mm::ss"); //转化形式
ui->label->setText(s); //把系统时间放入label
ui->label->setAlignment(Qt::AlignCenter); //将label中文字居中
if(s == alarm) //当系统当前时间与定时的时间相同时
{
emit my_signal(); //发送自定义信号
}
}
}
思维导图
文章来源:https://blog.csdn.net/qq_57071955/article/details/134957381
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!