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

QT 第四天

一、设置一个闹钟

.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

.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QLabel>    //标签
#include <QLineEdit> //行编辑器
#include <QPushButton>//按钮
#include <QTextEdit>  //文本编辑器
#include <QTextToSpeech>  //文本转语音的头文件
#include <QTimer>   //定时器类的头文件
#include <QTime>    //时间类
#include <QTimerEvent>//定时器时间处理类
#include <QDateTime>  //日期时间类QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();//声明定时器事件处理函数void timerEvent(QTimerEvent *e)override;private slots:void on_btn1_clicked();//启动按钮的槽函数void on_btn2_clicked();//结束按钮的槽函数private:Ui::Widget *ui;//定义一个播报员指针QTextToSpeech *speechr;//定义一个定时器指针QTimer *time;//定义一个定时器标识int tid;QPushButton *btn1;QTextEdit *txt1;QPushButton *btn2;QLineEdit *edit1;QLabel *lab1;
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化一个标签,设置为当前时间lab1 = new QLabel(" ",this);lab1 -> resize(400,150);//设置大小lab1->move(60,50);lab1->setStyleSheet("background-color:pink");//设置背景颜色lab1->setScaledContents(true);//设置内容自适应//实例化一个文本编辑器,设置为定的时间edit1 = new QLineEdit(this);edit1->setText("请输入>>>");    //设置编辑器中的文本内容edit1->setPlaceholderText("");   //设置编辑器的占位文本edit1->resize(250,75);      //设置尺寸edit1->move(lab1->x()+450,50);//移动位置edit1->setStyleSheet("background-color:pink");edit1->setEnabled(true);   //设置不可用状态4//实例化一个按钮,用作启动时间btn1 = new QPushButton(this);  //将当前界面设置成父组件btn1->setText("启动");btn1->resize(120,70);    //设置按钮大小btn1->setStyleSheet("background-color:pink");//设置背景颜色btn1->move(edit1->x(),edit1->y()+85);btn1->setEnabled(true);    //设置是否可用//实例化一个按钮,用作结束时间btn2 = new QPushButton(this);  //将当前界面设置成父组件btn2->setText("停止");btn2->resize(120,70);    //设置按钮大小btn2->setStyleSheet("background-color:pink");//设置背景颜色btn2->move(btn1->x()+130,btn1->y());btn2->setEnabled(true);    //设置是否可用//实例化一个文本编辑器,播报当定的时间与当前时间相同时的内容txt1 = new QTextEdit(this);txt1->setText("易烊千玺来叫你起床啦!!!");txt1->resize(700,300);txt1->setStyleSheet("background-color:pink");//设置背景颜色txt1->move(60,lab1->y()+200);//给播报员实例化一个空间speechr = new QTextToSpeech(this);//启动定时器tid = this->startTimer(0);  //每隔0秒调用timerEvent函数connect(btn1,&QPushButton::clicked,this,&Widget::on_btn1_clicked);   //启动按钮连接槽函数connect(btn2,&QPushButton::clicked,this,&Widget::on_btn2_clicked);   //启动按钮连接槽函数
}Widget::~Widget()
{delete ui;
}
//定时器闹钟启动按钮
void Widget::on_btn1_clicked()
{//启动按钮禁用this->btn1->setEnabled(false);//将文本编辑器禁用this->txt1->setEnabled(false);//关闭按钮开启this->btn2->setEnabled(true);
}
//定时器闹钟关闭按钮
void Widget::on_btn2_clicked()
{//启动按钮开启this->btn2->setEnabled(false);//将文本编辑器禁用this->txt1->setEnabled(true);//关闭按钮关闭this->btn1->setEnabled(true);
}
//定时器事件处理函数
void Widget::timerEvent(QTimerEvent *e)
{QDateTime sys_time = QDateTime::currentDateTime();  //获取系统当前的日期时间this->lab1->setText(sys_time.toString("yyyy-MM-dd-hh:mm:ss"));//将时间展示到lab1界面QString t = sys_time.toString("hh:mm:ss");this->lab1->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);//设置lab1中的内容居中显示if(t == this->edit1->text() && this->btn1->isEnabled()== false){speechr->say(this->txt1->toPlainText());}else if(this->btn1->isEnabled()== true){speechr->stop();}
}

二、使用绘制事件完成钟表的实现

QT       += core guigreaterThan(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 += target

.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QPaintEvent>
#include<QTimer>
#include<QPainter>
#include<QPen>
#include<QBrush>
#include<QTime>
#include<QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(int width, int height,QWidget *parent = nullptr);~Widget();void paintEvent(QPaintEvent *event);private:Ui::Widget *ui;QTimer *timer;int count = 0;int hour;int minute ;int second ;
};
#endif // WIDGET_H

main.cpp

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

widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(int width, int height,QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(width, height);timer = new QTimer;timer->start(1000);connect(timer, &QTimer::timeout, [&](){count++;update();});//获取系统时间QString t = QTime::currentTime().toString("h:m:s ap");//qDebug()<<t<<"   "<<t[0]<<" "<<t[2];QStringList list1 = t.split(" ");
//    for(int i=0; i<list1.size(); i++)
//    {
//        qDebug()<<list1.at(i);
//    }QStringList list2 = list1[0].split(":");for(int i=0; i<list2.size(); i++){qDebug()<<list2.at(i);}hour = list2[0].toUInt();minute = list2[1].toUInt();second = list2[2].toUInt();qDebug()<<"hour:"<<hour<<" minute:"<<minute<<"  second:"<<second;}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *event)
{//定义画家类绘制圆QPainter p(this);QPen pen(QColor("purple"));pen.setWidth(3);QBrush b("pink");p.setPen(pen);p.setBrush(b);p.translate(this->width()/2,this->height()/2);p.drawEllipse(QPoint(0,0), 200,200);//使用画家类绘制刻度pen.setColor(QColor("black"));p.setPen(pen);for(int i=0; i<60; i++){p.rotate(6);p.drawLine(QPoint(200,0), QPoint(195,0));}pen.setWidth(5);p.setPen(pen);for(int i=0; i<12; i++){p.drawLine(QPoint(200,0), QPoint(190,0));p.rotate(30);p.drawText(QPoint(0, -170),QString("%1").arg(i+1));}//制作时针pen.setWidth(10);pen.setColor(QColor("red"));p.setPen(pen);p.rotate(hour*30+6*second/60/12+30*minute/60+6*count/60/12);       //6*count/60/12+p.drawLine(QPoint(0,-50), QPoint(0, 5));//制作分针QPainter p1(this);p1.translate(this->width()/2,this->height()/2);pen.setWidth(6);pen.setColor(QColor("blue"));p1.setPen(pen);p1.rotate(6*count/60+minute*6+6*second/60);p1.drawLine(QPoint(0,-80), QPoint(0, 8));//制作秒针QPainter p2(this);p2.translate(this->width()/2,this->height()/2);pen.setWidth(3);pen.setColor(QColor("green"));p2.setPen(pen);p2.rotate(6*count+second*6);p2.drawLine(QPoint(0,-120), QPoint(0, 12));
}

相关文章:

QT 第四天

一、设置一个闹钟 .pro QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (the exact warnings # depend…...

nrf52832 GPIO输入输出设置

LED_GPIO #define LED_START 17 #define LED_0 17 #define LED_1 18 #define LED_2 19 #define LED_3 20 #define LED_STOP 20设置位输出模式&#xff1a; nrf_gpio_cfg_output(LED_0); 输出高电平:nrf_gpio_pin_set(LED_0); 输…...

MyBatis 动态 SQL 实践教程

一、MyBatis动态 sql 是什么 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中&#xff0c;开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如&#xff0c;拼接时要确保添加了必要的空格&#xff0c;还要注意去掉列…...

CSS 斜条纹进度条

效果&#xff1a; 代码&#xff1a; html: <div class"active-line flex"><!-- lineWidth&#xff1a;灰色背景 --><div class"bg-line"><div v-for"n in 30" class"gray"></div></div><div…...

JavaScript(1)每天10个小知识点

​ 目录 1. JavaScript 有哪些数据类型&#xff0c;它们的区别&#xff1f;**2. 数据类型检测的方式有哪些**3. null 和 undefined 区别**4. intanceof 操作符的实现原理及实现**5. 如何获取安全的 undefined 值&#xff1f;**6. Object.is() 与比较操作符 “”、“” 的区别*…...

scanf和scanf_s函数详解

目录 引言&#xff1a; 1.scanf函数的用法&#xff1a; 2.scanf_s函数的用法&#xff1a; 3.scanf和scanf_s的区别&#xff1a; 结论&#xff1a; 引言&#xff1a; 在C语言中&#xff0c;输入函数scanf是非常常用的函数之一&#xff0c;它可以从标准输入流中读取数据并将其…...

基于SSM的在线购物系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

认识JVM的内存模型

从上一节了解到整个JVM大的内存区域&#xff0c;分为线程共享的heap&#xff08;堆&#xff09;&#xff0c;MethodArea&#xff08;方法区&#xff09;&#xff0c;和线程独享的 The pc Register&#xff08;程序计数器&#xff09;、Java Virtual Machine Stacks&#xff08;…...

Java8实战-总结19

Java8实战-总结19 使用流映射对流中每一个元素应用函数流的扁平化 使用流 映射 一个非常常见的数据处理套路就是从某些对象中选择信息。比如在SQL里&#xff0c;你可以从表中选择一列。Stream API也通过map和flatMap方法提供了类似的工具。 对流中每一个元素应用函数 流支持…...

论文浅尝 | 训练语言模型遵循人类反馈的指令

笔记整理&#xff1a;吴亦珂&#xff0c;东南大学硕士&#xff0c;研究方向为大语言模型、知识图谱 链接&#xff1a;https://arxiv.org/abs/2203.02155 1. 动机 大型语言模型&#xff08;large language model, LLM&#xff09;可以根据提示完成各种自然语言处理任务。然而&am…...

【云计算网络安全】解析DDoS攻击:工作原理、识别和防御策略 | 文末送书

文章目录 一、前言二、什么是 DDoS 攻击&#xff1f;三、DDoS 攻击的工作原理四、如何识别 DDoS 攻击五、常见的 DDoS 攻击有哪几类&#xff1f;5.1 应用程序层攻击5.1.1 攻击目标5.1.2 应用程序层攻击示例5.1.3 HTTP 洪水 5.2 协议攻击5.2.1 攻击目标5.2.2 协议攻击示例5.2.3 …...

64位Linux系统上安装64位Oracle10gR2及Oracle11g所需的依赖包

在64位Linux系统上安装64位Oracle 10gR2,到底需要装哪些包? 这不是一个完整的安装教程,仅仅探讨在64位CentOS 5.8系统上安装64位Oracle 10gR2,到底需要装哪些RPM包. 实验环境VMWare Workstation 8.0 Linux发行版: CentOS 5.8 x86_64 Kernel版本: 2.6.18-308.el5 Oracle Dat…...

Unity InputSystem 基础使用之鼠标交互

资料 官方文档 导入InputSystem包 Package Manager 搜索Input System进行下载启用该包&#xff0c;会重启Unity Editor 注意 InputSystem可以和旧版输入系统一起使用 设置&#xff1a;Project Settings->Player->Other Settings->Configuration->Active Input…...

《算法竞赛·快冲300题》每日一题:“二进制数独”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 二…...

CnosDB 签约京清能源,助力分布式光伏发电解决监测系统难题。

近日&#xff0c;京清能源采购CnosDB&#xff0c;升级其“太阳能光伏电站一体化监控平台”。该平台可以实现电站设备统一运行监控&#xff0c;数据集中管理&#xff0c;为操作人员、维护人员、管理人员提供全面、便捷、差异化的数据和服务。 京清能源集团有限公司&#xff08;…...

汇编:lea 需要注意的一点

lea和mov的效用上不一样&#xff0c;如果当前%rsi的值是0&#xff0c; lea 0x28(%rsi),%rax &#xff0c;这个只是计算一个地址&#xff0c;而不是去做地址访问。 mov 0x8(%rsi),%rsi&#xff0c;而这个mov&#xff0c;在计算完地址&#xff0c;还要访问内存地址。如果rsi是0&a…...

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统&#xff08;数据库软件&#xff09;功能非常多&#xff0c;不仅仅是存储数据&#xff0c;还要包含&#xff1a;数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言&#xff0c;基于功能&#xff0c;划分为4类&#xff1a; 1、数据定…...

微信小程序精准扶贫数据收集小程序平台设计与实现

摘 要 近些年以来&#xff0c;随着我国的互联网技术的不断进步&#xff0c;计算机科学技术的发展也在不断的快速发展。在当下“互联网”的带动下&#xff0c;我国的各行各业&#xff0c;上到政府机关下到小微企业都通过互联网的发展带动取得了很好的发展势头。我国这两年来通过…...

PostgreSQL 流复制搭建

文章目录 前言1. 配置环境1.1 环境介绍1.2 主库白名单1.3 主库参数配置 2. 流复制搭建2.1 备份恢复2.2 创建复制用户2.3 参数修改2.4 启动并检查2.5 同步流复制2.6 同步复制级别 3. 流复制监控3.1 角色判断3.2 主库查看流复制3.3 延迟监控3.4 备库查询复制信息 前言 PostgreSQ…...

机器学习笔记之最优化理论与方法(十)无约束优化问题——共轭梯度法背景介绍

机器学习笔记之最优化理论与方法——共轭梯度法背景介绍 引言背景&#xff1a;共轭梯度法线性共轭梯度法共轭方向共轭VS正交共轭方向法共轭方向法的几何解释 引言 本节将介绍共轭梯度法&#xff0c;并重点介绍共轭方向法的逻辑与几何意义。 背景&#xff1a;共轭梯度法 关于…...

Mybatis核心对象及工作流程

目录 一、mybatis核心对象 &#xff08;1&#xff09;SqlSession对象直接操作数据库 &#xff08;2&#xff09;SqlSession对象通过代理对象操作数据库 二、mybatis工作流程 一、mybatis核心对象 &#xff08;1&#xff09;SqlSessionFactoryBuilder SqlSession工厂构建者对…...

无swing,高级javaSE毕业之贪吃蛇游戏(含模块构建,多线程监听服务),已录制视频

JavaSE&#xff0c;无框架实现贪吃蛇 B站已发视频&#xff1a;无swing&#xff0c;纯JavaSE贪吃蛇游戏设计构建 文章目录 JavaSE&#xff0c;无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图…...

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端&#xff0c;主要用于与kafka集群进行交互&#xff0c;如下图所示&#xff1a; 调用sendFetches发送消费请求&#xff0c;如下图所示&#xff1a; (1)、Fet…...

算法通关村-----位运算在海量元素中查找重复元素的妙用

用4KB内存寻找重复元素 问题描述 给定一个数组&#xff0c;包含从1到N的整数&#xff0c;N最大为32000&#xff0c;数组可能还有重复值&#xff0c;且N的取值不定&#xff0c;若只有4KB内存可用&#xff0c;如何打印数组中所有的重复元素。 问题分析 Java中存储整数使用int…...

RabbitMQ: Publish/Subscribe结构

生产者 package com.qf.mq2302.publishSub;import com.qf.mq2302.utils.MQUtils;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {private static final String EXCHANGE_NAME "logs";public static void main…...

单片机-蜂鸣器

简介 蜂鸣器是一种一体化结构的电子讯响器&#xff0c;采用直流电压供电 蜂鸣器主要分为 压电式蜂鸣器 和 电磁式蜂鸣器 两 种类型。 压电式蜂鸣器 主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成&#xff0c;当接通电源后&…...

华为云云耀云服务器L实例评测 | 分分钟完成打地鼠小游戏部署

前言 在上篇文章【华为云云耀云服务器L实例评测 | 快速部署MySQL使用指南】中&#xff0c;我们已经用【华为云云耀云服务器L实例】在命令行窗口内完成了MySQL的部署并简单使用。但是后台有小伙伴跟我留言说&#xff0c;能不能用【华为云云耀云服务器L实例】来实现个简单的小游…...

Android——数据存储(二)(二十二)

1. SQLite数据库存储 1.1 知识点 &#xff08;1&#xff09;了解SQLite数据库的基本作用&#xff1b; &#xff08;2&#xff09;掌握数据库操作辅助类&#xff1a;SQLiteDatabase的使用&#xff1b; &#xff08;3&#xff09;可以使用命令操作SQLite数据库&#xff1b; …...

appium环境搭建

一.appium环境搭建 1.python3 python3的下载安装这里就不多做介绍了&#xff0c;当然你也可以选择自己喜欢的语音&#xff0c;比如java… 2.jdk 1&#xff09;下载地址 官网(需登录账号)&#xff1a; https://www.oracle.com/java/technologies/downloads/ 百度网盘&…...

十五、Webpack打包图片-js-Vue、Label命令、resolve模块解析

一、webpack打包图片 &#xff08;1&#xff09;加载图片案例准备 为了演示我们项目中可以加载图片&#xff0c;我们需要在项目中使用图片&#xff0c;比较常见的使用图片的方式是两种&#xff1a; img元素&#xff0c;设置src属性&#xff1b;其他元素&#xff08;比如div&…...

武汉贷款网站制作/淘宝补流量平台

今年6月12日&#xff0c;Jetty项目发布了旗舰性开源嵌入式应用服务器的9.3版&#xff0c;同时这一天也是该项目的20周年纪念日。此次发布的主要特性包括增加了对HTTP/2服务端&#xff08;与客户端&#xff09;支持、系统最低要求Java 8&#xff0c;以及更多的NIO集成与完全重构…...

客户做网站要退款/百度权重怎么查询

高薪能买来快乐吗&#xff1f;来看看这位程序员的哀叹&#xff1a;实在是扛不住了&#xff0c;每天都在极度焦虑和痛苦中度过&#xff0c;早上起来要挣扎着做心理建设去上班&#xff0c;已经产生生理性的头晕恶心食欲不振。有工作本身的原因&#xff0c;更多是自己心态的问题&a…...

寻找网站开发/百度热搜大数据

函数返回值 多条return语句&#xff1a; defguess(x):if x > 3:return "> 3" else:return "< 3" defshowplus(x):print(x)return x 1 return x 2 #执行结果 10 11 #从结果来看 出现第一个return后 下面的就不会执行 deffn(x):for i inrange(x):…...

找个专门做各种外卖的网站/百度网盘app免费下载安装老版本

使用yum代替up2date自动更新升级RedHatAS3(转)最近装了一台RedHat AS3U2 服务器&#xff0c;AS3U2是从网上免费下载的&#xff0c;没有购买RedHat的服务&#xff0c;所以不能使用rhn up2date升级系统&#xff1b;虽说U2已经满新的了&#xff0c;但linux补丁不断&#xff0c;不能…...

wordpress 友链/谷歌seo优化公司

修改原因&#xff1a; ydid总是有重复值&#xff0c;原来系统不是直接在xjydjzb中更新数据&#xff0c;而是在一个keytable中记录上一次的最大的ydid。--今天在错误信息反馈中才知道这个原理 。 所以直接在keytable中找ydid的最大值。 CREATEproceduresp_xjydxhjmchar(10),yddm…...

网站开发实例/苹果cms永久免费全能建站程序

笔者一个数据结构的蒟蒻还是奇迹般的搞明白了splay的基本原理以及实现方法&#xff0c;所以写下这篇随笔希望能帮到像我当初一脸懵逼的人。 我们从二叉查找树开始说起&#xff1a; 二叉查找树是一棵二叉树&#xff0c;它满足这样一个性质&#xff1a;所有小于当前节点的点都在该…...