坐牢第三十七天(Qt)
作业:
使用qt做一个闹钟
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPixmap>
#include <QBitmap>
#include <QLabel> //标签类
#include <QLineEdit> //行编辑器类
#include <QPushButton> //按钮类
#include <QTextEdit> //多行编辑器类
#include <QTimer> //定时器类
#include <QTime> //时间类
#include <QtTextToSpeech> //播报员
#include<QMouseEvent>//鼠标事件类
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
//鼠标事件void mouseMoveEvent(QMouseEvent *event) override; //鼠标移动事件void mousePressEvent(QMouseEvent *event) override; //鼠标点击事件
public slots:void My_slot_1();void timeout_slot();
signals:void My_signal_1();
private:Ui::Widget *ui;QLabel *lab_jm;QLabel *lab_time;QLabel *lab_show;QPushButton *btn_1;QLineEdit *edit_time;QPushButton *btn_2;QTextEdit *textedit ;/****************************/QTimer t1;//定时器QTextToSpeech *speecher;//播报员QPoint temp;//中间辅助向量
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);/************************************界面************************************///1.设置界面this->setFixedSize(800,800);//固定大小this->setWindowFlag(Qt::FramelessWindowHint);//设置窗口纯净//2.加载背景图lab_jm =new QLabel(this);lab_jm->move(0,0);lab_jm->resize(800,800);lab_jm->setPixmap(QPixmap(":/icon/xaingrikui.jpg"));lab_jm->setScaledContents(true);lab_jm->setWindowOpacity(0.8);/***********************************标签*************************************///1.1时间的标签lab_time =new QLabel("现在时间",this);lab_time->resize(100,100);lab_time->move(50,70);//创建新字体QFont font1;font1.setFamily("Arial"); // 设置字体为Arialfont1.setPointSize(12); // 设置字体大小为12号font1.setBold(true); // 设置字体为粗体// 将新字体应用到行编辑器lab_time->setFont(font1);//2.1展示具体时间的标签lab_show=new QLabel(this);lab_show->resize(400,100);lab_show->move(lab_time->x(),lab_time->y()+lab_time->height());lab_show->setStyleSheet("background-color :rgb(135,206,250));");//创建新字体QFont font;font.setFamily("Arial"); // 设置字体为Arialfont.setPointSize(16); // 设置字体大小为16号font.setBold(true); // 设置字体为粗体// 将新字体应用到行编辑器lab_show->setFont(font);/***********************************行编辑器*************************************///写入定时时间行编辑器edit_time =new QLineEdit(this);edit_time->resize(200,90);edit_time->move(lab_show->x()+lab_show->width()+30,lab_show->y());//将字体应用到行编辑器edit_time->setFont(font);/***********************************按钮*************************************///1.启动按钮btn_1 =new QPushButton("启动",this);btn_1->resize(80,40);btn_1->move(edit_time->x()-20,edit_time->y()+edit_time->height()+10);btn_1->setFont(font1);//2.取消按钮btn_2 =new QPushButton("取消",this);btn_2->resize(80,40);btn_2->move(btn_1->x()+edit_time->width()-40,btn_1->y());btn_2->setEnabled(false);btn_2->setFont(font1);/***********************************播报多行编辑器*************************************///用于写入播报内容的多行编辑器textedit =new QTextEdit(this);textedit->resize(750,400);textedit->move(25,350);textedit->setFont(font);/***********************************展示时间*************************************///1.启动按钮绑定connect(btn_1,&QPushButton::clicked,this,&Widget::My_slot_1);//2.由于定时器事件的信号与槽的绑定只需要一次,所以直接写在构造函数中即可connect(&t1, &QTimer::timeout, this, &Widget::timeout_slot);//3.取消按钮connect(btn_2,&QPushButton::clicked,[&]{edit_time->clear();textedit->clear();});//给播报员分配内存空间speecher =new QTextToSpeech;btn_2->setEnabled(false);
}Widget::~Widget()
{delete ui;
}
//1.启动按钮槽函数
void Widget::My_slot_1()
{if(btn_1->text()=="启动"){//启动一个定时器t1.start(1000); //每隔指定的时间,发送一个timeout的信号btn_1->setText("开始");btn_2->setEnabled(true);}else{//当在运行脑子时使一些功能和按钮不可用btn_1->setEnabled(false);edit_time->setReadOnly(true);textedit->setReadOnly(true);}
}//2.展示槽函数
void Widget::timeout_slot()
{//获取系统的时间QTime sysTime = QTime::currentTime();//将QTime类对象转变成字符串QString tm = sysTime.toString("hh:mm:ss");//将时间展示到ui界面上lab_show->setText(tm);//lab_show->setAlignment(Qt::AlignCenter);//居中//行编辑器和时间对比if(edit_time->text()== lab_show->text()){//让播报员播报出多行编辑器里的内容speecher->say(textedit->toPlainText());//让那些按钮和编辑器变得可用btn_1->setEnabled(true);edit_time->setReadOnly(false);textedit->setReadOnly(false);}
}//界面和鼠标跟着走函数
void Widget::mouseMoveEvent(QMouseEvent *event)//鼠标移动事件
{this->move(event->globalPos()-temp);
}
void Widget::mousePressEvent(QMouseEvent *event)//鼠标按下事件
{temp=event->globalPos()-this->pos();//求出中间辅助向量if(event->button() ==Qt::RightButton){this->close();}
}
相关文章:
坐牢第三十七天(Qt)
作业: 使用qt做一个闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPixmap> #include <QBitmap> #include <QLabel> //标签类 #include <QLineEdit> //行编辑器类 #include <QPushBu…...
Vidu 全球首发「主体参照」新功能,一键同步角色特征;GPT-4o 实时音频项目负责人离职创业丨 RTE 开发者日报
开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…...
电子地图的主要功能与应用
电子地图,即数字地图,是利用计算机技术,以数字方式存储和查阅的地图。它不仅继承了传统纸质地图的基本功能,还通过现代科技手段实现了诸多创新应用。以下是电子地图的主要功能与应用: 一、主要功能 快速存取与显示&…...
基于Java+SpringBoot+Vue+MySQL的西安旅游管理系统网站
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于SpringBootVue的西安旅游管理系统网站【附源码文档】、…...
简单介绍 NVIDIA推出的图形处理单元(GPU)架构“安培架构“
概念 "安培架构"(Ampere Architecture)是 NVIDIA 推出的一款图形处理单元(GPU)架构,它是继图灵架构之后的下一代产品。安培架构最初在2020年发布,以其高性能和高效率而闻名,广泛应用…...
Qiskit:量子计算的Python工具包
Qiskit是由IBM开发的开源量子计算软件开发工具包,它提供了一套完整的工具,用于量子电路的设计、模拟、优化和执行。Qiskit支持量子算法的开发,并且可以与IBM的量子计算机硬件进行交互。 Qiskit的主要特点 量子电路设计:Qiskit允…...
Python——贪吃蛇
以下是一个简单的贪吃蛇游戏的Python代码示例: import pygame import time import random# 初始化 Pygame pygame.init()# 定义颜色 BLACK (0, 0, 0) WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 设置屏幕尺寸 screen_width …...
WPF 依赖属性与附加属性(面试长问)
在WPF中,**依赖属性(Dependency Property)和附加属性(Attached Property)**是WPF依赖属性系统的重要组成部分。它们虽然都基于依赖属性系统,但用途、定义方式和使用场景有显著差异。以下是两者的详细解释及…...
Python 中的各括号用法
括号的使用 在Python中,括号和中括号有不同的用途: 圆括号 (): 函数调用:当你调用一个函数时,需要使用圆括号,即使没有参数。print("Hello, World!") # 调用print函数表达式分组:在…...
业务流程建模(BPM)的重要性及其应用
什么是业务流程建模(BPM)? 业务流程建模(BPM)是对企业内各项业务流程进行图形化描述的一种方法。它旨在通过可视化的方式帮助企业理解和分析现有的业务流程,从而发现潜在的问题并进行改进。BPM通常采用流程…...
isxdigit函数讲解 <ctype.h>头文件函数
目录 1.头文件 2.isxdigit函数使用 方源一把抓住VS2022,顷刻 炼化! 1.头文件 以上函数都需要包括头文件<ctype.h> ,其中包括 isxdigit 函数 #include<ctype.h> 2.isxdigit函数使用 isxdigit 函数是判断字符是否为十六进制数…...
Linux中安装NextCloud
切换为 root 账号 Ubutu 系统默认登录的用户为非 root 权限用户,为了能正常安装 nextCloud,需要切换为 root 账号。执行如下命令即可: sudo su 更新及安装基础包 请依次运行如下命令,有遇到询问的Is this ok [y/d/N]的时候直接键…...
【编程基础知识】什么是数据库事务
事务(Transaction)是数据库管理系统中的一个基本概念,用于确保数据库操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability…...
移植案例与原理 - XTS子系统之应用兼容性测试用例开发
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 startup子系统之syspara_lite系统属性部件 (1) startup子系统之syspara_lite系统属性部件 (2) startup子系…...
关于linux里的df命令以及inode、数据块-stat链接数以及关于awk文本处理命令中内置函数sub、gsub、sprintf
一、关于linux里的df命令以及inode、数据块-stat链接数 Linux中df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计,平常这个命令也用得很多,但一般就是使用df -h查看各个分区的空间使用情况,除此外也可以使用df查看当前linux系统…...
如何本地搭建Whisper语音识别模型
要在本地搭建Whisper语音识别模型,您需要以下几个步骤: 步骤一:系统准备 操作系统: 建议使用Ubuntu 20.04或以上版本,确保系统足够稳定和兼容。硬件配置: 最好有一个强大的GPU,因为语音识别涉及大量的计算工作。推荐…...
微信小程序仿微信聊天界面
界面结构: 消息列表: 使用 scroll-view 实现滚动,每条消息使用 view 组件包裹,根据消息类型 (文本、图片、文件) 显示不同内容。输入框区域: 包含输入框 (textarea)、发送按钮 (button) 和上传文件按钮 (view 组件模拟)。头像: 使用 image 组件展示。 …...
文件用电脑生成的在线技巧,能够轻松将多种类型文件转二维码
现在为了能够更加快捷将文件分享给其他人查看,很多人会通过制作二维码的方式来存储文件,这样可以减少文件对内存的占用,而且用户扫码获取内容也更加的方便快捷。二维码能够随时更新内容,可以长期通过一个二维码来提供个不同的内容…...
QT实现TCP/UDP通信
服务器端: 客户端: 服务器: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDebug&…...
流程自动化变革:看低代码开发如何赋能企业创新转型
在数字化转型的浪潮中,企业面临着前所未有的挑战和机遇。为了保持竞争力,企业必须快速适应市场变化,创新业务模式,并提高运营效率。流程自动化成为企业转型的关键,而低代码开发平台如JNPF,正成为推动这一变…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
