2022.12.14---qt

本文介绍了一个基于Qt的应用程序,该程序能够实现定时播报的功能。通过使用QTimer与QTextToSpeech组件,应用程序可以定期朗读指定的文本内容,并且允许用户自定义播报的时间间隔。

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

实现一个定时播报功能

//头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>
#include <QTime>
#include <QDateTime>
#include<QTimerEvent>
#include <QMessageBox>
#include<QTextToSpeech>


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT
signals:
    void showText();     //信号函数声明

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

    void timerEvent(class QTimerEvent *event);

private slots:
    void on_pushButton_start_clicked();     //启动按钮对应的槽函数

    void on_pushButton_cancel_clicked();    //取消按钮对应的槽函数

    void speech();      //自定义槽函数读取文本内容

private:
    Ui::Widget *ui;
    int timeId;     //定时器1
    QTimer *timer;
};
#endif // WIDGET_H
//源文件
#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //开启一个定时器显示出系统时间
    timeId=startTimer(1000);

    timer=new QTimer;
    //将另一个定时器的timeout信号连接到槽函数
    connect(timer,&QTimer::timeout,[&](){emit speech();});
}

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

void Widget::timerEvent(QTimerEvent *event)
{
    QDateTime sysDate=QDateTime::currentDateTime();
    QString date=sysDate.toString("yyyy-MM-dd hh:mm:ss");
    ui->label_systemTime->setText(date);
}

//启动按钮对应的槽函数
void Widget::on_pushButton_start_clicked()
{
    ui->lineEdit->setDisabled(true);        //设置行编辑器不可用
    ui->textEdit->setDisabled(true);        //设置文本编辑器不可用
    ui->pushButton_start->setDisabled(true);        //设置启动按钮不可用
    QString text=(ui->lineEdit->text());     //获取行编辑器内容
    int n=text.toInt();
    timer->start(n*1000);        //开启定时器
}

//取消按钮对应的槽函数
void Widget::on_pushButton_cancel_clicked()
{
    auto btn=QMessageBox::question(this,"question","是否取消?",QMessageBox::Yes|QMessageBox::No);
    //对用户选定的按钮,进行判断
    if(btn==QMessageBox::Yes)
    {
        timer->stop();
        ui->lineEdit->setEnabled(true);        //设置行编辑器可用
        ui->textEdit->setEnabled(true);        //设置文本编辑器可用
        ui->pushButton_start->setEnabled(true);        //设置启动按钮可用
    }
}

void Widget::speech()
{
    //将文本内容读出来
    QTextToSpeech *speech=new QTextToSpeech(this);
    QString text=ui->textEdit->toPlainText();      //获取文本编辑器内容
    speech->say(text);
    timer->stop();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值