QTday4

本文描述了一个名为Cecillasalarm的程序,它是一个使用Qt库开发的窗口应用,包含闹钟功能,包括定时器事件处理、时间显示、文本输入和语音播报。用户可以设置闹钟并选择关闭或启动。

实现闹钟功能

1》 头文件

#ifndef BURGER_H
#define BURGER_H

#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QTextEdit>
#include <QTimerEvent> //定时器事件类
#include <QDateTime>
#include <QTextToSpeech>
#include <QMouseEvent>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class burger; }
QT_END_NAMESPACE

class burger : public QWidget
{
    Q_OBJECT

public:
    burger(QWidget *parent = nullptr);
    ~burger();
    void timerEvent (QTimerEvent *event)override;
private slots:
    void end_cli();
    void start_cli();
private:
    Ui::burger *ui;
    QLabel *back;
    QTextEdit *text;
    QPushButton *startbtn;
    QPushButton *endbtn;
    QLineEdit *enterline;
    QLabel *timelabel;
    int time_t;
    QTextToSpeech *speech;
};
#endif // BURGER_H

2》源文件:

#include "burger.h"
#include "ui_burger.h"

burger::burger(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::burger)
{
    ui->setupUi(this);
    //窗口设置
    this->resize(540,360);
    this->setWindowTitle("Cecilla's alarm");
    this->setWindowIcon(QIcon(":/IMG_0895.JPG"));
    this->setWindowFlags(Qt::FramelessWindowHint);
    //背景设置
    back = new QLabel(this);
    back->resize(this->size());
    back->setPixmap(QPixmap(":/IMG_0092.jpg"));
    back->setScaledContents(true);
    //文本框
    text = new QTextEdit(this);
    text->resize(260,160);
    text->move(80,180);
    //启动按钮
    startbtn = new QPushButton("启动",this);
    startbtn->resize(80,50);
    startbtn->move(300,100);
    //关闭按钮
    endbtn = new QPushButton("关闭",this);
    endbtn->resize(80,50);
    endbtn->move(420,100);
    //输入时间文本框
    enterline = new QLineEdit(this);
    enterline->resize(200,50);
    enterline->move(300,40);
    //时间显示文本框
    timelabel = new QLabel(this);
    timelabel->resize(220,60);
    timelabel->move(20,60);
    timelabel->setStyleSheet("background-color:pink;");
    time_t = this->startTimer(1000);
    //语音播报
    speech = new QTextToSpeech(this);
    connect(endbtn,&QPushButton::clicked,this,&burger::end_cli);
    connect(startbtn,&QPushButton::clicked,this,&burger::start_cli);
}

burger::~burger()
{
    delete ui;
}
void burger::timerEvent(QTimerEvent *event)
{
    if(event->timerId() == time_t)
    {
        QDateTime sys_date=QDateTime::currentDateTime(); //获取当前系统日期时间
        //时间转换为字符串
        QString t=sys_date.toString("yyyy:MM:dd hh-mm-ss");
        //输出显示
        this->timelabel->setText(t);
        this->timelabel->setAlignment(Qt::AlignCenter); //文本对齐
        this->timelabel->setFont(QFont("微软雅黑",13));
        QString s=sys_date.toString("hh:mm:ss");
        if(s==enterline->text() && startbtn->text()=="已设置")
        {
            speech->say(text->toPlainText());
        }
    }
}

void burger::end_cli()
{
    this->close();
}

void burger::start_cli()
{
    QString s = enterline->text();
    if(s == "")
    {
        enterline->setText("请输入时间");
    }
    if(startbtn->text()== "启动")
    {
        startbtn->setText("已设置");
    }
    else
    {
        startbtn->setText("启动");
    }
}

思维导图:::

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值