widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTimer> //定时器类
#include <QTime> //时间类
#include <QTimerEvent> //定时器事件类
#include <QDateTime> //日期时间类
#include <QPushButton>
#include <QTextEdit>
#include <QLCDNumber>
#include <QLineEdit>
#include <QKeyEvent> //键盘事件类
#include <QTextToSpeech>
#include <QPainter>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
void mouseMoveEvent(QMouseEvent *event) override;
void mousePressEvent(QMouseEvent *event) override; //鼠标移动事件处理函数
signals:
void btn1_signal();
void btn2_signal();
public slots:
void btn1_slots();
void btn2_slots();
void timeout_slot(); //自定义处理超时信号的槽函数
private:
Ui::Widget *ui;
QPoint temp; //中间辅助向量
QPushButton *btn1;
QPushButton *btn2;
QTextToSpeech *speecher; //定义播报员指针
QLCDNumber *lcdNumber;
//定义一个定时器变
QTimer t1;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
, btn1(new QPushButton(this))
, btn2(new QPushButton(this))
, lcdNumber(new QLCDNumber(this)) // 初始化 QLCDNumber
, t1(new QTimer(this))
{
ui->setupUi(this);
this->setWindowFlag(Qt::FramelessWindowHint); //去除控件的头部
btn1 ->setParent(this); //将自定义的界面当作按钮的父组件
btn2 ->setParent(this);
btn1 ->setText("启动");
btn2 ->setText("取消");
btn1 ->move(450,200);
btn2 ->move(600,200);
QTextEdit *textEdit = new QTextEdit(this); //设置文本框
textEdit->setPlaceholderText("请输入"); // 设置占位符文本
textEdit ->setGeometry(50,250,700,300); //设置位置和大小
lcdNumber->setGeometry(50,50,300,150);
QLineEdit *lineEdit = new QLineEdit(this);
lineEdit ->setGeometry(450,50,300,100);
//将按钮1绑定到对应的槽函数1上
connect(this->btn1,&QPushButton::clicked,[this](){this->btn1_slots();});
//将按钮2绑定到对应的槽函数2上
connect(this->btn2,&QPushButton::clicked,[this](){this->btn2_slots();});
connect(&t1, &QTimer::timeout, this, &Widget::timeout_slot);
}
Widget::~Widget()
{
delete ui;
delete lcdNumber; // 删除 QLCDNumber 实例
}
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();
}
}
void Widget::btn1_slots() //自定义槽函数的实现
{
t1.start(1000); //每隔指定的时间,发送一个timeout的信号
}
void Widget::btn2_slots() //自定义槽函数的实现
{
t1.stop();
}
void Widget::timeout_slot()
{
//获取系统的时间
QTime sysTime = QTime::currentTime();
//将QTime类对象转变成字符串
QString tm = sysTime.toString("hh:mm");
//将时间展示到ui界面上
this->lcdNumber->display(tm);
if(sysTime.second()%2==0)
{
tm[2] = ':';
}else
{
tm[2] = ' ';
}
this->lcdNumber->display(tm);
}