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

坐牢第三十七天(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();}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++算法】分治——归并
  • 每日必抢小程序下单总结
  • C++——深部解析哈希
  • 助力汽车零部件产业发展,2025 第十二届广州国际汽车零部件加工技术及汽车模具展览会与您相约“羊城”广州
  • 了解elementUI的底层源码, 进行二次开发
  • SpringBoot项目获取统一前缀配置以及获取非确定名称配置
  • python画图|3D surface基础教程
  • 【诉讼流程-健身房-违约-私教课-多次沟通无效-民事诉讼-自我学习-铺平通往法律的阶梯-讲解(1)】
  • tensor 的运算(加法、点乘、矩阵乘法)
  • node.js框架StrongLoop快速入门实战
  • Python编码系列—Python建造者模式:构建复杂对象的优雅之道
  • C++学习笔记(22)
  • llvm后端之函数栈帧
  • Mastering openFrameworks_第五章_使用视频
  • 健身管理|基于java的健身管理系统小程序(源码+数据库+文档)
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • [译]CSS 居中(Center)方法大合集
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Android Studio:GIT提交项目到远程仓库
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • github从入门到放弃(1)
  • Java深入 - 深入理解Java集合
  • MySQL几个简单SQL的优化
  • quasar-framework cnodejs社区
  • React-生命周期杂记
  • 深入浅出webpack学习(1)--核心概念
  • 探索 JS 中的模块化
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微服务核心架构梳理
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​Redis 实现计数器和限速器的
  • ​secrets --- 生成管理密码的安全随机数​
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $.each()与$(selector).each()
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (笔试题)分解质因式
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (六)vue-router+UI组件库
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (推荐)叮当——中文语音对话机器人
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)RocketMQ初步认识
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)我也是一只IT小小鸟
  • *Django中的Ajax 纯js的书写样式1
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .Net mvc总结
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 常见的偏门问题