qt作业day4

//clock_exercise.cpp#include "clock_timer.h"
#include "ui_clock_timer.h"//时间事件处理函数
void Clock_Timer::timerEvent(QTimerEvent *event)
{if(event->timerId() == time_id){sys_tm = QDateTime :: currentDateTime();
//        int year = sys_tm.date().year();
//        int month = sys_tm.date().month();
//        int day = sys_tm.date().day();//时分秒int hour = sys_tm.time().hour();int min = sys_tm.time().minute();int sec = sys_tm.time().second();
//        qDebug()  << "系统时间:" << hour << ":" << min << ":" << sec;QString settime = timeEdit->text();this->timeLab->setText(sys_tm.toString("yyyy-mm-dd hh:mm:ss"));splitTime();QString readtxt =this->txt_edit->toPlainText();vector<int> :: iterator iter = split.begin();if(*(iter++) == hour && *(iter++) == min && *iter == sec){speech->say(this->txt_edit->toPlainText());}}
}Clock_Timer::Clock_Timer(QWidget *parent) :QWidget(parent),ui(new Ui::Clock_Timer)
{ui->setupUi(this);this->resize(800,700);this->setWindowFlags(Qt :: FramelessWindowHint);
//    this->setWindowTitle("小淼子快起床了");//显示系统时间标签timeLab = new QLabel(this);timeLab->move(30,20);timeLab->resize(300,60);timeLab->setText("系统时间");timeLab->setFont(QFont("楷体",16));timeLab->setStyleSheet("background-color:skyblue");//启动按钮startBtn = new QPushButton(this);startBtn->setText("启动");startBtn->move(600,50);startBtn->resize(QSize(60,40));connect(startBtn,&QPushButton :: clicked,this,&Clock_Timer :: startRecTime);//停止按钮stopBtn = new QPushButton(this);stopBtn->resize(startBtn->size());stopBtn->move(startBtn->x() + startBtn->width() + 20,startBtn->y());stopBtn->setText("停止");stopBtn->setEnabled(false);connect(stopBtn,&QPushButton :: clicked,this,&Clock_Timer :: stopRecTime);//用户输入时间单行编辑器timeEdit = new QLineEdit(this);timeEdit->move(400,timeLab->y());timeEdit->setFont(QFont("楷体",16));timeEdit->resize(200,80);timeEdit->setPlaceholderText("时:分:秒");//用户输入语音播报文本编辑器txt_edit = new QTextEdit(this);txt_edit->move(0,200);txt_edit->resize(QSize(this->width(),this->height() - 200));txt_edit->setFont(QFont("楷体",20));//语音播报speech = new QTextToSpeech(this);}void Clock_Timer::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons() == Qt :: LeftButton){this->move(event->globalPos() - startPos);}}void Clock_Timer::mousePressEvent(QMouseEvent *event)
{if(event->buttons() == Qt :: LeftButton){this->startPos = event->globalPos() - this->pos();}else if(event->buttons() == Qt :: RightButton){int ret = QMessageBox :: question(this,"确认","是否要关闭界面",QMessageBox :: Yes | QMessageBox :: No,QMessageBox :: No);if(ret == QMessageBox :: Yes){this->close();}}}Clock_Timer::~Clock_Timer()
{delete ui;
}//按下启动按钮后的事件处理函数
void Clock_Timer::startRecTime()
{
//    qDebug() << this->timeEdit->text();if(this->timeEdit->text() == ""){QMessageBox :: warning(this,"警告","无输入",QMessageBox :: Ok,QMessageBox :: Ok);return;}//点击启动后,解锁停止按钮,同时锁定启动按钮this->stopBtn->setEnabled(true);this->startBtn->setEnabled(false);this->timeEdit->setEnabled(false);this->txt_edit->setEnabled(false);//开启定时器time_id = this->startTimer(1000);
}//按下停止按钮后的事件处理函数
void Clock_Timer::stopRecTime()
{int ret = QMessageBox :: question(this,"提示","是否确认要停止定时器",QMessageBox :: Yes | QMessageBox :: No,QMessageBox :: Yes);if(ret == QMessageBox :: Yes){this->startBtn->setEnabled(true);this->stopBtn->setEnabled(false);this->timeEdit->setEnabled(true);this->txt_edit->setEnabled(true);//关闭定时器this->killTimer(time_id);}}//分割时分秒
void Clock_Timer :: splitTime()
{this->split.clear();QString temp = timeEdit->text();QStringList s = temp.split(":");QStringList :: iterator iter = s.begin();for(;iter != s.end();iter++){qDebug() << (*iter);split.push_back(iter->toInt());}
}
//头文件#ifndef CLOCK_TIMER_H
#define CLOCK_TIMER_H#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QTime>
#include <QTextToSpeech>
#include <QDateTime>
#include <QMessageBox>
#include <vector>
#include <QDebug>
#include <QMouseEvent>using namespace std;
namespace Ui {
class Clock_Timer;
}class Clock_Timer : public QWidget
{Q_OBJECTvoid timerEvent(QTimerEvent *event);    //时间事件处理函数public:explicit Clock_Timer(QWidget *parent = nullptr);void mouseMoveEvent(QMouseEvent *event);void mousePressEvent(QMouseEvent *event);~Clock_Timer();void splitTime();
public slots:void startRecTime();void stopRecTime();private:Ui::Clock_Timer *ui;QPushButton *startBtn;      //启动按钮QPushButton *stopBtn;       //停止按钮QLabel *timeLab;            //系统获取时间QLineEdit *timeEdit;       //记录用户输入的时间QTextEdit *txt_edit;        //用户输入的播报内容QMessageBox *stopConfirm;   //对话框,询问用户是否确认停止QTextToSpeech *speech;int time_id;                //记录定时器IDQDateTime sys_tm;           //记录系统时间vector<int> split;QPoint startPos;               //记录鼠标起始点};#endif // CLOCK_TIMER_H

运行效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/102378.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python开发的DIY字符画程序(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的DIY字符画程序&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&…

uniapp的小程序中使用web-view进行相互传参,并监听web-view的返回键

uniapp的小程序中使用web-view进行相互传参&#xff0c;并监听web-view的返回键 一、unaipp给webview传参 //uniapp页面中 <web-view :src"src" message"getMessage" onPostMessage"getPostMessage"></web-view>data() {return …

css3对文字标签不同宽,不同高使用瀑布流对齐显示

<div class"wrapper" style"padding: 0;"><span class"wf-item task-tags text-center" v-for"(item,index) in data.categorys" :key"index">{{ item }}</span> </div>/* 名称瀑布流显示 */ .wrap…

Ansible学习笔记15

1、roles&#xff1a;&#xff08;难点&#xff09; roles介绍&#xff1a; roles&#xff08;角色&#xff09;&#xff1a;就是通过分别将variables&#xff0c;tasks及handlers等放置于单独的目录中&#xff0c;并可以便捷地调用他们的一种机制。 假设我们要写一个playbo…

高忆管理:六连板捷荣技术或难扛“华为概念股”大旗

在本钱商场上名不见经传的捷荣技术&#xff08;002855.SZ&#xff09;正扛起“华为概念股”大旗。 9月6日&#xff0c;捷荣技术已拿下第六个连续涨停板&#xff0c;短短七个生意日&#xff0c;股价累积涨幅逾越90%。公司已连发两份股票生意异动公告。 是炒作&#xff0c;还是…

字节一面:css选择器有哪些?优先级?哪些属性可以继承?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;作为一名前端开发工程师&#xff0c;css是我们的必备技能&#xff0c;熟悉css选择器以及继承是我们写好css的关键&#xff0c;博主在这给大家细细道来。 &#x1f680; 作者…

NASM编译器之下载安装使用

NASM的下载和安装 每种处理器都可能会有自己的汇编语言编译器&#xff0c;而对于同一款处理器来说&#xff0c;针对不同的平台(比如Windows和Linux&#xff09;&#xff0c;也会有不同版本的汇编语言编译器。 现存的汇编语言编译器有多种&#xff0c;用得比较多的有 MASM、FA…

大数据学习06-Spark分布式集群部署

Spark完全分布式部署 前期准备&#xff0c;每台服务器都需要配置安装Scala下载Scala安装包配置环境变量 安装spark解压配置环境修改配置 前期准备&#xff0c;每台服务器都需要配置 配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"Ethernet" PROX…

申威芯片UOS中opencv DNN推理

Cmake&#xff0c;opencv&#xff0c;opencv-contribute安装 #apt可能需要更新apt update apt install -y wget unzip apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev#安装cmake apt i…

韶音耳机是哪个国家的品牌,韶音耳机属于什么档次

在如今耳机产品层出不穷的时代&#xff0c;许多品牌纷纷推陈出新&#xff0c;打造出更具创新性的耳机产品。其中&#xff0c;韶音耳机可谓引人注目。然而&#xff0c;对于韶音耳机这个品牌&#xff0c;仍有许多朋友并不熟悉。比如说&#xff0c;韶音耳机是哪个国家的品牌呢&…

解决Spring Data JPA中的NullPointerException问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Python全攻略:基础学习、爬虫编程实战和面试技巧

在这个充满活力和机会的编程世界中&#xff0c;我们为你提供一份宝贵的指南&#xff0c;旨在帮助你全面了解Python的各个方面。我们将深入探讨面试技巧&#xff0c;提供学习资源&#xff0c;探索爬虫实战经验&#xff0c;并提供丰富的编程示例。无论你是初学者&#xff0c;还是…