当前位置: 首页 > news >正文

QT设计一个小闹钟

        设置一个闹钟,左侧窗口显示当前时间,右侧设置时间,以及控制闹钟的开关,下方显示闹钟响时的提示语。当按启动按钮时,设置时间与闹钟提示语均不可再改变。当点击停止时,关闭闹钟并重新启用设置时间与闹钟提示语。

闹钟窗口展示:

工程管理文件:

QT       += core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cppHEADERS += \widget.hFORMS += \widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetRESOURCES += \picture.qrc

头文件:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QDebug>
#include <QLabel>   //标签
#include <QTextEdit>    //文本编辑器
#include <QLineEdit>    //行编辑器
#include <QPushButton>  //按钮#include <QTimerEvent>  //事件处理函数
#include <QDateTime>
#include <QtTextToSpeech>    //播报员
#include <QPaintEvent>
#include <QPainter>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic slots://定义启动按钮的槽函数void on_btnStart_clicked();//定义停止按钮的槽函数void on_btnStop_clicked();public:Widget(QWidget *parent = nullptr);~Widget();//重写定时器事件处理函数void timerEvent(QTimerEvent *event) override;void paintEvent(QPaintEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mousePressEvent(QMouseEvent *event) override;private:Ui::Widget *ui;QLabel *lab_time;QPushButton *btn_start;QPushButton *btn_stop;QLineEdit *line_setTime;QTextEdit *text_show;int time_id;    //基于事件处理函数QString oclock;   //设置闹钟QTextToSpeech *speak;   //设置播报员QPoint drap;
};
#endif // WIDGET_H

主函数:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w; w.show();return a.exec();
}

主要功能函数:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化一个播报员speak = new QTextToSpeech(this);time_id = this->startTimer(1000);//纯净窗口this->setWindowFlag(Qt::FramelessWindowHint);//固定窗口尺寸this->setFixedSize(540,410);//显示当前时间lab_time = new QLabel(this);lab_time->setAlignment(Qt::AlignCenter);lab_time->setStyleSheet("border:2px solid rgb(0, 170, 255);font:16pt;border-radius:10px;color:white");lab_time->setGeometry(20,20,300,120);//设置text窗口text_show = new QTextEdit(this);text_show->setPlaceholderText("请输入闹钟提示语");text_show->setAlignment(Qt::AlignCenter);text_show->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:5px;font:20pt;background-color:transparent;color:white");text_show->setGeometry(20,150,500,250);//显示设置的时间line_setTime = new QLineEdit(this);line_setTime->setPlaceholderText("请设置时间");line_setTime->setAlignment(Qt::AlignCenter);line_setTime->setStyleSheet("border:2px solid rgb(0, 170, 255);font:16pt;border-radius:10px;background-color:transparent;color:white");line_setTime->setGeometry(350,20,170,60);//启动按钮btn_start = new QPushButton(this);btn_start->setText("启动");btn_start->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:10px;font:14pt;color:white");btn_start->setGeometry(350,90,80,50);//停止按钮btn_stop = new QPushButton(this);btn_stop->setText("停止");btn_stop->setStyleSheet("border:2px solid rgb(0, 170, 255);border-radius:10px;font:14pt;color:white");btn_stop->setGeometry(440,90,80,50);//启动按钮connect(btn_start, &QPushButton::clicked, this, &Widget::on_btnStart_clicked);connect(btn_stop, &QPushButton::clicked, this, &Widget::on_btnStop_clicked);}Widget::~Widget()
{delete ui;
}void Widget::on_btnStart_clicked()
{oclock = line_setTime->text();line_setTime->setEnabled(false);text_show->setEnabled(false);btn_start->setText("已启动");
}void Widget::on_btnStop_clicked()
{line_setTime->setEnabled(true);text_show->setEnabled(true);speak->stop();btn_start->setText("启动");
}
void Widget::timerEvent(QTimerEvent *event)
{if(event->timerId() == time_id){QDateTime time = QDateTime::currentDateTime();lab_time->setText(time.toString("yyyy-MM-dd hh:mm:ss"));if(oclock == time.toString("hh:mm:ss")){speak->say(text_show->toPlainText());}}
}void Widget::paintEvent(QPaintEvent * event)
{QPainter painter(this);painter.drawPixmap(rect(),QPixmap(":/picture/back.jpg"),QRect());
}void Widget::mousePressEvent(QMouseEvent *event)
{drap = event->globalPos() - this->pos();//右键关闭窗口if(event->button() == Qt::RightButton){this->close();}
}void Widget::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos() - drap);
}
http://www.lryc.cn/news/157680.html

相关文章:

  • MybatisPlus(3)
  • 安全计算环境技术测评要求项
  • Excel快捷键表
  • Windows Server 系统各版本及授权说明(附下载地址
  • 【智慧工地源码】物联网和传感器技术在智慧工地的应用
  • 计算机安全学习笔记(IV):基于角色的访问控制 - RBAC
  • MFC中的Button修改颜色的方法
  • 【算法】选择排序
  • golang之context实用记录
  • 音视频FFmpeg简单理解学习,必学技术
  • 一款内网信息收集利用工具
  • 数据库表的操作
  • Golang开发--channel的使用
  • SQL sever中表管理
  • CSSoverflow 属性
  • 08:STM32----DMA数据转运
  • Golang 程序漏洞检测利器 govulncheck(二):漏洞数据库详解
  • [JDK8下的HashMap类应用及源码分析] 数据结构、哈希碰撞、链表变红黑树
  • 高等数学刷题
  • lintcode 1840 · 矩阵还原【中等 vip 二维前缀和数组】
  • VMware虚拟机+Centos7 配置静态,动态IP
  • 【C++精华铺】10.STL string模拟实现
  • 微信小程序开发---事件的绑定
  • 基于Hata模型的BPSK调制信号小区覆盖模拟matlab完整程序分享
  • 音视频 ffmpeg视频裁剪
  • Web3数据云OORT推出商用版智能代理构建平台:OORT TDS
  • ChatGPT:革命性的自然语言处理技术
  • 利用frps搭建本地自签名https服务的透传
  • 安卓手机安装Linux然后在其中安装(jdk,MySQL,git)
  • javaee之黑马乐优商城2