首先是头文件部分内容,包含语音播报者,定时器等
- #ifndef WIDGET_H
- #define WIDGET_H
-
- #include
- #include
- #include
- #include
//定时器 - //#include
- #include
- #include
- #include
- #include
- #include
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class Widget; }
- QT_END_NAMESPACE
-
- class Widget : public QWidget
- {
- Q_OBJECT
- signals:
- void signal_1();
-
- public:
- Widget(QWidget *parent = nullptr);
- ~Widget();
- void timerEvent(QTimerEvent *event); //重写定时器事件
- void paintEvent(QPaintEvent *event); //重写背景虚函数
-
- private slots:
- void on_timerbtn_clicked();
- void on_timeout_sloat(); //自定义槽函数处理timeout的处理逻辑
-
- void on_timerevent_clicked();
-
- void on_stopbtn_clicked();
-
- void on_textEdit_copyAvailable();
-
- void on_lineEdit_cursorPositionChanged();
-
- private:
- Ui::Widget *ui;
- QTimer *t1; //定义时间定时器类的指针
- int ID; //starttimer函数对应的ID
- QString str;
- QString str1;
- QString time_text;
-
- QTextToSpeech speech;
-
- };
- #endif // WIDGET_H
main.cpp部分,负责输出用,不需要多谢东西
- #include "widget.h"
-
- #include
-
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- Widget w;
- w.show();
- return a.exec();
- }
widget.cpp部分代码,其中有两个图片地址是用来设置背景图和lab标签图
- #include "widget.h"
- #include "ui_widget.h"
-
- Widget::Widget(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::Widget)
- {
- ui->setupUi(this);
- this->setWindowTitle("♥♥♥迷你定时闹钟♥♥♥");
- //给定时器指针实例化对象
- t1= new QTimer(this);
- //链接timeout信号对应的槽函数
- connect(t1,&QTimer::timeout,this,&Widget::on_timeout_sloat);
-
- ui->timerlab->setStyleSheet("border-image:url(:/12.png)");
-
- }
-
- Widget::~Widget()
- {
- delete ui;
- }
- //重写的定时器事件
- void Widget::timerEvent(QTimerEvent *event)
- {
- //1.获取系统事件
- QTime currentTime =QTime::currentTime();
- //2.将系统事件转换为字符串
- time_text=currentTime.toString("hh:mm:ss");
- //3.将事件展示到ui界面
- ui->timereventlab->setText(time_text);
-
-
-
- }
-
- void Widget::paintEvent(QPaintEvent *event)
- {
- QPainter *painter = new QPainter(this);
-
- QPixmap pic = QPixmap(":/6.png");
-
- painter->drawPixmap(0,0,this->width(),this->height(),pic);
- }
-
- //timerbtn对应的槽函数,实现类对象处理的定时器事件
- void Widget::on_timerbtn_clicked()
- {
- //if(ui->timerbtn->text()=="start")
- //{
- //开启定时器事件
- t1->start(1000); //每隔1s(msec)后,会自动发射一个timeout信号,可以在槽函数中书写逻辑
- ui->timerbtn->setEnabled(false); //使开始按钮失效
- ui->lineEdit->setEnabled(false); //使行编辑器失效
- ui->timereventlab->clear(); //清空小表盘,改为大表盘
- //关闭定时器事件
- killTimer(ID);
- // ui->timerbtn->setText("stop");
- //}
- // else if(ui->timerbtn->text()=="stop")
- // {
- //关闭定时器事件
- // t1->stop();
- // ui->timerbtn->setText("start");
- // }
- }
- //处理定时器类发射的timeout信号的槽函数
- void Widget::on_timeout_sloat()
- {
- //1.获取系统时间
- QDateTime currentTime=QDateTime::currentDateTime();
- //将时间放到对应的lab中
- QString timeText = currentTime.toString("yyyy-MM-dd hh-mm-ss");
- ui->timerlab->setText(timeText);
- if(ui->lineEdit->text()==timeText)
- {
- speech.say(ui->textEdit->toPlainText());
- }
-
-
-
- }
- //timeeventbtn按钮对应的槽函数
- void Widget::on_timerevent_clicked()
- {
-
- //开启定时器事件
- ID=startTimer(1000); //一旦超时,就会触发定时器事件,所以要重写
-
- }
-
- void Widget::on_stopbtn_clicked()
- {
- ui->timerbtn->setEnabled(true);//使开始按钮启动
-
- ui->lineEdit->setEnabled(true); //使行编辑器启动
- ui->textEdit->clear();
- }
-
- void Widget::on_textEdit_copyAvailable()
- {
- str = ui->textEdit->toPlainText();
- }
-
- void Widget::on_lineEdit_cursorPositionChanged()
- {
- str1=ui->lineEdit->text();
- }
最后是最终结果,和ui图
