• 2023/09/19 qt day3


    头文件

    1. #ifndef WIDGET_H
    2. #define WIDGET_H
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. QT_BEGIN_NAMESPACE
    15. namespace Ui { class Widget; }
    16. QT_END_NAMESPACE
    17. class Widget : public QWidget
    18. {
    19. Q_OBJECT
    20. public:
    21. Widget(QWidget *parent = nullptr);
    22. ~Widget();
    23. //定时器事件处理函数
    24. void timerEvent(QTimerEvent *e) override;
    25. private slots:
    26. void on_btn1_clicked();
    27. void on_btn2_clicked();
    28. private:
    29. Ui::Widget *ui;
    30. int timer_id1; //定时器的id号
    31. //定义一个播报员
    32. QTextToSpeech *speaker;
    33. };
    34. #endif // WIDGET_H

    功能函数文件

    1. #include "widget.h"
    2. #include "ui_widget.h"
    3. Widget::Widget(QWidget *parent)
    4. : QWidget(parent)
    5. , ui(new Ui::Widget)
    6. {
    7. ui->setupUi(this);
    8. //给播报员实例化空间
    9. speaker = new QTextToSpeech(this);
    10. }
    11. Widget::~Widget()
    12. {
    13. delete ui;
    14. }
    15. //启动启动定时器按钮对应的槽函数
    16. void Widget::timerEvent(QTimerEvent *e)
    17. {
    18. //id1
    19. if(e->timerId() == timer_id1)
    20. {
    21. //获取系统时间存放在sys_t中
    22. QTime sys_t1 = QTime::currentTime();
    23. //将QTime类转化成Qstring类
    24. QString t1 = sys_t1.toString("hh:mm:ss");
    25. //展示到ui界面
    26. ui->lab->setText(t1);
    27. //判断行文本编辑器,设置一个时间,如果时间到了就播报古诗
    28. if(ui->L_edit1->text() == t1 )
    29. {
    30. speaker->say(ui->T_edit1->toPlainText());
    31. }
    32. }
    33. }
    34. //启动系统时间的按钮
    35. void Widget::on_btn1_clicked()
    36. {
    37. timer_id1 = this->startTimer(1000);
    38. }
    39. //停止系统时间的按钮
    40. void Widget::on_btn2_clicked()
    41. {
    42. this->killTimer(timer_id1); //关闭给定定时器的id号
    43. speaker->stop();
    44. }

    效果图

    保存按钮对应的槽函数
    1. void Widget::on_keepbtn_clicked()
    2. {
    3. QString filename = QFileDialog::getSaveFileName(this,
    4. "另存为",
    5. "./",
    6. "All(*.*);;Images(*.png *.xpm *.jpg);;Text files(*.txt);;XML files(*.xml)");
    7. if(filename.isNull())
    8. {
    9. QMessageBox::information(this,"提示","用户取消了文件保存");
    10. return ;
    11. }
    12. //实例化一个文件对象
    13. QFile file(filename);
    14. if(!file.open(QFile::ReadWrite))
    15. {
    16. QMessageBox::critical(this,"失败","文件打开失败");
    17. return ; //文件打开失败
    18. }
    19. //获取需要保存的内容
    20. QString content =ui->textEdit->toPlainText();
    21. QByteArray msg1 = content.toUtf8();
    22. file.write(msg1);
    23. file.close();
    24. }

  • 相关阅读:
    ElementUI自定义主题
    Kubernetes——KubeSphere构建mysql集群
    聊聊 Netty 那些事儿之 Reactor 在 Netty 中的实现
    【语音识别】MFCC+VAD端点检测智能语音门禁系统【含GUI Matlab源码 451期】
    数据结构与算法 -二叉树
    Java多线程2.2-synchronized 实现原理
    Linux安全--iptables详解
    Spring的读取和存储对象
    MySQL——数据的删除以及MySQL中的约束
    企业如何做源代码保护措施
  • 原文地址:https://blog.csdn.net/cscssacd/article/details/133049290