作业
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QMouseEvent>
#include<QTimer> //定时器类
#include<QTime> //时间类
#include<QTimerEvent> //定时器事件类
#include<QDateTime> //日期时间类
#include <QDebug>
#include <QtTextToSpeech>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void mousePressEvent(QMouseEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
private:
Ui::Widget *ui;
QPoint temp; //
QString linetext; //用于设定时间
QString textedit; //用于播报
int tid = 0;
QLabel *lab = new QLabel(this); //显示的时间
QPushButton *btn1 = new QPushButton("启动",this); //确认
QPushButton *btn2 = new QPushButton("取消",this); //取消
QLineEdit *ledt = new QLineEdit(this); //输入的时间
QTextEdit *txt = new QTextEdit(this); //提示语
QTextToSpeech *speecher = new QTextToSpeech(this);;
void timerEvent(QTimerEvent *event)override;
public:signals:
//void out();
private slots:
void btn1_slots();
void btn2_slots();
};
#endif // WIDGET_H
主函数
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
源文件
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowFlag(Qt::FramelessWindowHint); //去除控件头部
this->setFixedSize(800,800); //设置ui界面大小
//设置各个组件的大小
btn1->resize(150,50);
btn2->resize(150,50);
ledt->resize(300,200);
lab->resize(300,200);
txt->resize(700,350);
//设置各个组件的位置
ledt->move(450,100);
btn1->move(ledt->x(),ledt->y()+ledt->height()+20);
btn2->move(btn1->x()+btn1->width(),btn1->y());
lab->move(50,100);
txt->move(50,420);
//设置组件样式
lab->setStyleSheet("background-color:yellow;");
btn2->setEnabled(false);
tid = this->startTimer(1000);
connect(btn1,&QPushButton::clicked,this,&Widget::btn1_slots);
connect(btn2,&QPushButton::clicked,this,&Widget::btn2_slots);
//connect(this,&Widget::out,this,&Widget::btn2_slots);
}
Widget::~Widget()
{
delete ui;
}
void Widget::mousePressEvent(QMouseEvent *event)
{
temp = event->globalPos() - this->pos();
}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() - temp);
}
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId() == tid)
{
lab->setText(QTime::currentTime().toString("hh:mm:ss"));
lab->setAlignment(Qt::AlignCenter);
}
if(lab->text() == linetext)
{
speecher->say(textedit);
btn2->setEnabled(false);
btn1->setEnabled(true);
txt->setEnabled(true);
ledt->setEnabled(true);
txt->clear();
ledt->clear();
linetext.clear();
textedit.clear();
QMessageBox::warning(this,"警告","起床!!!",QMessageBox::Ok);
}
}
void Widget::btn1_slots()
{
btn1->setEnabled(false);
btn2->setEnabled(true);
linetext = ledt->text(); //获取定时时间信息
textedit = txt->toPlainText(); //获取播报信息
txt->setEnabled(false);
ledt->setEnabled(false);
}
void Widget::btn2_slots()
{
btn2->setEnabled(false);
btn1->setEnabled(true);
txt->setEnabled(true);
ledt->setEnabled(true);
txt->clear();
ledt->clear();
linetext.clear();
textedit.clear();
}