• QT实现简易闹钟功能


    1. QT += core gui texttospeech
    2. ******************************************
    3. #ifndef WIDGET_H
    4. #define WIDGET_H
    5. #include <QWidget>
    6. #include <QLabel>
    7. #include <QLineEdit>
    8. #include <QPushButton>
    9. #include <QTextEdit>
    10. #include <QDebug>
    11. #include <QTime>
    12. #include <QTimer>
    13. #include <QDateTime>
    14. #include <QTextToSpeech>
    15. QT_BEGIN_NAMESPACE
    16. namespace Ui { class Widget; }
    17. QT_END_NAMESPACE
    18. class Widget : public QWidget
    19. {
    20. Q_OBJECT
    21. QLabel *label;
    22. QLineEdit *edit;
    23. QPushButton *btn1;
    24. QPushButton *btn2;
    25. QTextEdit *text;
    26. QTimer *timer;
    27. QTimer *timer2;
    28. QTextToSpeech *speecher;
    29. QLabel *back;
    30. public:
    31. Widget(QWidget *parent = nullptr);
    32. ~Widget();
    33. public slots:
    34. void btn1_slot();
    35. void btn2_slot();
    36. private slots:
    37. void timeout_slot();
    38. void timeout_slot2();
    39. private:
    40. Ui::Widget *ui;
    41. };
    42. #endif // WIDGET_H
    43. *********************************************************
    44. #include "widget.h"
    45. #include "ui_widget.h"
    46. Widget::Widget(QWidget *parent)
    47. : QWidget(parent)
    48. , ui(new Ui::Widget)
    49. {
    50. ui->setupUi(this);
    51. //取消头部,纯净窗口
    52. this->setWindowFlag(Qt::FramelessWindowHint);
    53. //qDebug()<<this->size();
    54. this->resize(QSize(600,400));
    55. // back = new QLabel(this);//设置背景照片
    56. // back->resize(this->size());
    57. // back->setPixmap(QPixmap(":/new/prefix1/C:/Users/30734/Desktop/zq/zq.png"));
    58. // back->setScaledContents(true);
    59. //实例一个显示时间标签
    60. label=new QLabel(this);
    61. //label->setStyleSheet("background-color:yellow");
    62. label->resize(280,65);
    63. label->move(50,50);
    64. //实例一个定时行编辑
    65. edit=new QLineEdit(this);
    66. edit->move(label->x()+label->width()+30,label->y());
    67. //qDebug() <<edit->size();
    68. edit->resize(QSize(150,25));
    69. edit->setAlignment(Qt::AlignCenter);
    70. edit->setStyleSheet("background: transparent;");
    71. //实例启动按钮
    72. btn1=new QPushButton(this);
    73. btn1->move(edit->x(),label->y()+edit->height()+15);
    74. //qDebug() <<btn1->size();
    75. btn1->resize(QSize(50,30));
    76. btn1->setText("启动");
    77. connect(btn1,&QPushButton::clicked,this,&Widget::btn1_slot);
    78. //实例停止按钮
    79. btn2=new QPushButton(this);
    80. btn2->move(btn1->x()+btn1->width()+50,btn1->y());
    81. btn2->resize(QSize(50,30));
    82. btn2->setText("关闭");
    83. btn2->setEnabled(false);
    84. connect(btn2,&QPushButton::clicked,this,&Widget::btn2_slot);
    85. //实例文本编辑
    86. text=new QTextEdit(this);
    87. text->move(label->x(),label->y()+label->height()+30);
    88. text->resize(QSize(500,215));
    89. text->setText("三更灯火五更鸡\n"
    90. "正是男儿读书时\n"
    91. "黑发不知勤学早\n"
    92. "白首方悔读书迟\n");
    93. //text->setAlignment(Qt::AlignCenter);
    94. text->setFont(QFont("楷书",18));
    95. text->setStyleSheet("background: transparent;"); // 设置文本编辑器背景为透明
    96. //显示时间定时器
    97. timer = new QTimer(this);
    98. timer->start(1000);
    99. connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);
    100. //语音播报
    101. speecher = new QTextToSpeech(this);
    102. }
    103. Widget::~Widget()
    104. {
    105. delete ui;
    106. }
    107. //显示时间函数
    108. void Widget::timeout_slot()
    109. {
    110. QTime sys_time = QTime::currentTime();
    111. QString t = sys_time.toString("hh:mm:ss");
    112. this->label->setText(t);
    113. this->label->setAlignment(Qt::AlignCenter);
    114. this->label->setFont(QFont("微软雅黑",35));
    115. this->label->setStyleSheet("color: white;");
    116. }
    117. //启动按钮槽函数
    118. void Widget::btn1_slot()
    119. {
    120. edit->setEnabled(false);
    121. text->setEnabled(false);
    122. btn1->setEnabled(false);
    123. btn2->setEnabled(true);
    124. timer2 = new QTimer(this);//启动后判断闹钟定时器
    125. timer2->start(1000);
    126. connect(timer2,&QTimer::timeout,this,&Widget::timeout_slot2);
    127. }
    128. //关闭按钮槽函数
    129. void Widget::btn2_slot()
    130. {
    131. btn2->setEnabled(false);
    132. btn1->setEnabled(true);
    133. edit->setEnabled(true);
    134. text->setEnabled(true);
    135. timer2->stop();//关闭闹钟
    136. }
    137. //判断闹钟函数
    138. void Widget::timeout_slot2()
    139. {
    140. if(edit->text()==label->text())
    141. {
    142. QString txt=text->toPlainText();
    143. speecher->say(txt);
    144. }
    145. }

  • 相关阅读:
    基于Chirp窄带扩频技术的无线混合组网应用,以多角色智能计量插座作为Chirp广域基站,构建边缘计算混合无线网络
    003传统图机器学习、图特征工程
    RabbitMQ之可靠性分析
    RedisTemplate缓存List的操作
    区块链游戏开发颠覆传统游戏开发的 5 种方式
    从Kafka的可靠性设计体验软件设计之美
    Databend 源码阅读: Storage 概况和 Read Partitions
    精品基于Javaweb的酒店民宿管理推荐平台SSM
    vue中babel-plugin-component按需引入和element-ui 的主题定制,支持发布,上线
    hexo 使用hexo g -d报错
  • 原文地址:https://blog.csdn.net/qq_61395411/article/details/132655097