qt定时闹钟(2023-4-8)

该代码示例展示了如何在Qt环境中创建一个无边框窗口,使用QTimerEvent实现时间显示更新,当时间与设定值匹配时触发QTextToSpeech进行语音提醒。此外,还包含了鼠标事件处理以实现窗口拖动功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    s=new QTextToSpeech(this);
    ui->timeEdit->setText("12:52:30");
    setWindowFlag(Qt::FramelessWindowHint);
}

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

//按钮打开
void Widget::on_eventStartBtn_clicked()
{     
    t_id=this->startTimer(1000);
    ui->eventStartBtn->setDisabled(true);
    ui->eventCloseBtn->setDisabled(false);
}

//按钮关闭
void Widget::on_eventCloseBtn_clicked()
{
    this->killTimer(t_id);
    ui->eventCloseBtn->setDisabled(true);
    ui->eventStartBtn->setDisabled(false);
}

//重写定时器事件处理函数
void Widget::timerEvent(QTimerEvent *event)
{
    if(event->timerId()==t_id)
    {
        //获取系统日期时间
        QDateTime sysDate=QDateTime::currentDateTime();
        //将日期时间转化为字符串
        QString date=sysDate.toString("hh:mm:ss");
        //将字符串展示到ui界面
        ui->eventLab->setText(date);
    }
    if(ui->eventLab->text()==ui->timeEdit->text())
        {
            ui->textEdit->setText("起床了");
            s->say(ui->textEdit->toPlainText());
        }

}

void Widget::mousePressEvent(QMouseEvent *event)
{
    startpoint=event->globalPos()-this->frameGeometry().topLeft();
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    this->move(event->globalPos()-startpoint);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值