欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 坐牢第三十七天(Qt)

坐牢第三十七天(Qt)

2024/11/17 10:46:04 来源:https://blog.csdn.net/m0_62828714/article/details/142108227  浏览:    关键词:坐牢第三十七天(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();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com