qt day 5

1>实现闹钟功能

----------------------------------------------------------------------
.pro
----------------------------------------------------------------------
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.h# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
----------------------------------------------------------------------
.h
----------------------------------------------------------------------
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QPushButton>
#include <QTimer>
#include <QTime>
#include <QTextToSpeech>
#include <QMouseEvent>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void Localtime();void Clock_check();void Opbtn_Cli();void Clobtn_Cli();void mousePressEvent(QMouseEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;private://显示实施时间定时器QTimer *loct;QTimer *clotime;//界面组件QLabel *loctimlab;QLineEdit *clocklab;QPushButton *opbtn;QPushButton *clobtn;QTextEdit *txt;//时间比较int lhour = 0;int lmin = 0;int lsec = 0;int chour = 0;int cmin = 0;int csec = 0;//鼠标位置QPoint clipos;QPoint movpos;//播报员QTextToSpeech *sp = new QTextToSpeech(this);};
#endif // WIDGET_H
----------------------------------------------------------------------
main.cpp
----------------------------------------------------------------------
#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}
----------------------------------------------------------------------
widget.cpp
----------------------------------------------------------------------
#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{this->setWindowFlag(Qt::FramelessWindowHint);this->resize(700,500);this->setStyleSheet("background-color:skyblue");this->setWindowOpacity(0.8);//创建显示当前时间文本框loctimlab = new QLabel(this);loctimlab->move(50,50);loctimlab->resize(350,100);loctimlab->setAlignment(Qt::AlignCenter);QFont ff;ff.setPointSize(20);loctimlab->setFont(QFont(ff));//创建定时时间文本框clocklab = new QLineEdit(this);clocklab->move(loctimlab->x()+loctimlab->width()+50,loctimlab->y());clocklab->resize(200,45);ff.setPointSize(16);clocklab->setAlignment(Qt::AlignHCenter);clocklab->setFont(QFont(ff));clocklab->setText("00 : 00 : 00");//创建开启按钮opbtn = new QPushButton(this);opbtn->move(clocklab->x(),clocklab->y()+clocklab->height()+10);opbtn->resize(75,45);opbtn->setText("开启");connect(opbtn,&QPushButton::clicked,this,&Widget::Opbtn_Cli);//创建停止按钮clobtn = new QPushButton(this);clobtn->move(clocklab->x()+opbtn->width()+50,clocklab->y()+clocklab->height()+10);clobtn->resize(75,45);clobtn->setText("停止");clobtn->setEnabled(0);connect(clobtn,&QPushButton::clicked,this,&Widget::Clobtn_Cli);//创建提示文本框txt = new QTextEdit(this);txt->move(loctimlab->x(),loctimlab->y()+loctimlab->height()+50);txt->resize(600,250);txt->setText("knocking!!!");//实例化定时器loct = new QTimer(this);loct->start(1000);clotime = new QTimer(this);//连接定时器与槽函数connect(loct,&QTimer::timeout,this,&Widget::Localtime);connect(clotime,&QTimer::timeout,this,&Widget::Clock_check);
}Widget::~Widget()
{
}//获取实时时间
void Widget::Localtime()
{//获取实时时间QTime ltime = QTime::currentTime();//把时间显示到文本框上Widget::loctimlab->setText(ltime.toString("hh : mm : ss"));//获取时间lhour = ltime.hour();lmin = ltime.minute();lsec = ltime.second();}//时间比较
void Widget::Clock_check()
{if(lhour == chour && lmin == cmin && lsec == csec){//阅读文本内容sp->say(txt->toPlainText());}
}//开启闹钟定时
void Widget::Opbtn_Cli()
{//启动定时器clotime->start(1000);//获取定时时间QString tt;QByteArray t;QByteArray tmp;tt = clocklab->text();t = tt.toUtf8();int j = 0;//获取小时数for(int i = 0;t[j] != ':';i++,j++){tmp[i] = t[j];}j++;chour = atoi(tmp);//获取分钟数for(int i = 0;t[j] != ':';i++,j++){tmp[i] = t[j];}j++;cmin = atoi(tmp);//获取秒数for(int i = 0;t[j] != ':';i++,j++){tmp[i] = t[j];}j++;csec = atoi(tmp);//设置其他为不可用opbtn->setEnabled(0);clocklab->setEnabled(0);txt->setEnabled(0);clobtn->setEnabled(1);}//停止按钮
void Widget::Clobtn_Cli()
{//设置按钮可用opbtn->setEnabled(1);clocklab->setEnabled(1);txt->setEnabled(1);clobtn->setEnabled(0);//停止定时器clotime->stop();
}void Widget::mousePressEvent(QMouseEvent *event)
{if(event->buttons() == Qt::LeftButton){clipos = event->pos();}else{this->close();}
}void Widget::mouseMoveEvent(QMouseEvent *event)
{this->move(event->globalPos()-clipos);
}

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

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

相关文章

CEF内核和高级爬虫知识

(转)关于MFC中如何使用CEF内核&#xff08;CEF初解析&#xff09; Python GUI: cefpython3的简单分析和应用 cefpython3&#xff1a;一款强大的Python库 开始大多数抓取尝试可以从几乎一行代码开始&#xff1a; fun main() PulsarContexts.createSession().scrapeOutPages(&q…

【项目源码】一套基于springboot+Uniapp框架开发的智慧医院3D人体导诊系统源码

智慧医院3D人体导诊系统源码 开发语言&#xff1a;java 开发工具&#xff1a;IDEA 前端框架&#xff1a;Uniapp 后端框架&#xff1a;springboot 数 据 库&#xff1a;mysql 移 动 端&#xff1a;微信小程序、H5 “智慧导诊”以人工智能手段为依托&#xff0c;为…

JVM介绍

一、介绍 1. JVM是什么 JVM是Java Virtual Machine的缩写&#xff0c;即咱们经常提到的Java虚拟机。虚拟机是一种抽象化的计算机&#xff0c;有着自己完善的硬件架构&#xff0c;如处理器、堆栈等&#xff0c;具体有什么咱们不做了解。目前我们只需要知道想要运行Java文件&…

基于Matlab实现生活中的图像信号分类(附上源码+数据集)

在我们的日常生活中&#xff0c;我们经常会遇到各种各样的图像信号&#xff0c;例如照片、视频、图标等等。对这些图像信号进行分类和识别对于我们来说是非常有用的。在本文中&#xff0c;我将介绍如何使用Matlab来实现生活中的图像信号分类。 文章目录 介绍源码数据集下载 介…

Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)

题目 给定一个长度为n(n<1e6)的序列&#xff0c;第i个数ai(1<ai<n)&#xff0c; 操作&#xff1a;你可以将当前i位置的数和a[i]位置的数交换 交换可以操作任意次&#xff0c;求所有本质不同的数组的数量&#xff0c;答案对1e97取模 思路来源 力扣群 潼神 心得 感…

科创板50ETF期权交易:详细规则、费用、保证金和开户攻略

科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金&#xff08;ETF&#xff09;&#xff0c;旨在跟踪科创板50指数的表现&#xff0c;下文介绍科创板50ETF期权交易&#xff1a;详细规则、费用、保证金和开户攻略&am…

2022年09月 C/C++(六级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C++编程(1~8级)全部真题・点这里 第1题:stack or queue 栈和队列都是常用的线性结构,它们都提供两个操作: Push:加入一个元素。 Pop:弹出一个元素。 不同的是,栈是”先进后出”,而队列则是”先进先出”。 给出一个线性结构的进出顺序,判定这个结构是栈还是队列。 时…

RT-Thread I/O设备模型(一)

I/O设备模型 绝大部分的嵌入式系统都包括一些I/O&#xff08;Input/Output&#xff0c;输入/输出&#xff09;设备&#xff0c;例如仪器上的数据显示屏&#xff0c;工业设备上的串口通信、数据采集设备上用于保存数据的 Flash 或 SD 卡&#xff0c;以及网络设备的以太网接口等…

Mapbox-gl 关闭所有Popup,以及关闭按钮出现黑色边框bug

1.官方示例 var popup new mapboxgl.Popup().addTo(map);popup.remove(); 很明显&#xff0c;需要记录popup对象&#xff0c;管理起来比较麻烦。 2.本人采用div的方式关闭所有的popup&#xff0c;在map对象上新增加方法 map.closePopupmapView.popupClear function(){$(&q…

ELK安装、部署、调试(三)zookeeper安装,配置

1.准备 java安装&#xff0c;系统自带即可 2.下载zookeeper zookeeper.apache.org上可以下载 tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local mv apache-zookeeper-3.7.1-bin zookeeper 3.配置zookeeper mv zoo_sample.cfg zoo.cfg /usr/local/zookeeper/con…

3D视觉测量:面对面的对称度 点对(附源码)

文章目录 0. 测试效果1. 基本内容2. 3D视觉测量对称度测量思路3. 代码实现4. 参考文章目录:3D视觉测量目录微信:dhlddxB站: Non-Stop_目标:通过3D视觉方法计算面对面的对称度0. 测试效果 数据说明:此测试点云是通过UG建模,Meshlab降采样得到,数据比较理想,仅作为测试使用…

【人工智能】—_一阶逻辑、量词的推理规则、一般化分离规则、合一、前向_反向链接算法、归结算法

文章目录 量词的推理规则全称量词实例化存在量词实例化 简化到命题逻辑推理Generalized Modus Ponens&#xff08;一般化分离规则&#xff09;举例 合一Forward chaining 前向链接算法示例 Backward chaining algorithm 反向链接算法一般FOL的FC/BC的完整性 归结算法归结推理规…

智慧水产养殖方案,守护养殖水产品安全!

水产品在人们的饮食文化中占据着举足轻重的地位&#xff0c;更是人们摄入蛋白质的重要来源。因此&#xff0c;保障食品安全&#xff0c;提升养殖水产品的品质至关重要然。而传统的人工观察水产养殖方式较为单一&#xff0c;难以及时发现水质问题和投喂情况&#xff0c;容易导致…

Medium:How to check the correctness of the AB test?

有以下两种错误&#xff1a; 通常&#xff0c;type 1 error is more important&#xff01;因此我们type 2 error就是在“委曲求全”&#xff1a; The probability of Type II error can be adjusted to the desired value by changing the size of the groups or by reducing…

【力扣】416. 分割等和子集 <动态规划、回溯>

【力扣】416. 分割等和子集 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5,…

手写RPC——数据序列化工具protobuf

手写RPC——数据序列化工具protobuf Protocol Buffers&#xff08;protobuf&#xff09;是一种用于结构化数据序列化的开源库和协议。下面是 protobuf 的一些优点和缺点&#xff1a; 优点&#xff1a; 高效的序列化和反序列化&#xff1a;protobuf 使用二进制编码&#xff0c…

SIEM(安全信息和事件管理)解决方案

什么是SIEM 安全信息和事件管理&#xff08;SIEM&#xff09;是一种可帮助组织在安全威胁危害到业务运营之前检测、分析和响应安全威胁的解决方案&#xff0c;将安全信息管理 (SIM) 和安全事件管理 (SEM) 结合到一个安全管理系统中。SIEM 技术从广泛来源收集事件日志数据&…

《Flink学习笔记》——第十二章 Flink CEP

12.1 基本概念 12.1.1 CEP是什么 1.什么是CEP&#xff1f; 答&#xff1a;所谓 CEP&#xff0c;其实就是“复杂事件处理&#xff08;Complex Event Processing&#xff09;”的缩写&#xff1b;而 Flink CEP&#xff0c;就是 Flink 实现的一个用于复杂事件处理的库&#xff08…

jmeter 常数吞吐量定时器

模拟固定吞吐量的定时器。它可以控制测试计划中各个请求之间的时间间隔&#xff0c;以达到预期的吞吐量。 参数包括&#xff1a; Target Throughput&#xff1a;目标吞吐量&#xff08;每分钟请求数&#xff09;Calculate Throughput based on&#xff1a;吞吐量计算基准&…

《多线程编程实战指南》总结

Java 并发和多线程编程推荐《Java 并发编程实战》和《多线程编程实战指南》&#xff0c;前者是外国非常受欢迎的书籍的翻译本&#xff0c;后者是国人写的书&#xff0c;符合国人的思维模式。 进程、线程与任务 在操作系统中会运行多个程序&#xff0c;一个运行中的程序就是一个…