2月11日QT

1> 制作一个闹钟软件

头文件:

复制代码
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QTimer>  //定时器类
#include <QTime>   //时间类
#include <QTimerEvent> //定时器事件类
#include <QDateTime>   //日期时间类
#include <QDebug>
#include <QMessageBox>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

//自定义的槽函数
private slots:
    void funTime();            //定时器的槽函数
    void on_startBtn_clicked();//启动按键的槽函数
    void on_cancleBtn_clicked();//取消按键的槽函数

private:
    Ui::Widget *ui;

    QTimer *timer;    //定时器指针
    QTime alarmTime;  //时间类对象
    bool alarmSet=false;  //开启或关闭闹钟条件之一(按键决定)
};
#endif // WIDGET_H

源文件:

复制代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    //给定时器实例化空间
    timer= new(QTimer);
    //连接定时器作用的槽函数(发送者,发送的信号,接收者,处理信号的槽函数)
    connect(timer, &QTimer::timeout, this, &Widget::funTime);
    //开启定时器
    timer->start(1000);   //每1秒发送一次信号
}

Widget::~Widget()
{
    delete ui;
}

//定时器的槽函数
void Widget::funTime()
{
    //显示当前时间
    QTime nowtime=QTime::currentTime();//获取当前时间
    QString t=nowtime.toString("hh:mm:ss");//转换成字符串类型
    ui->timeLab->setText(t);      //显示到Lab

    //闹钟
    if(alarmSet && nowtime>=alarmTime)
    {
        // 获取QTextEdit中的内容
        QString text=ui->textEdit->toPlainText();
        qDebug()<<text;
        //闹钟对话框
        QMessageBox::information(this,"闹钟","起床当牛马啦!");
        alarmSet=false;   //闹钟条件改为 否
    }
}

//启动按键的槽函数
void Widget::on_startBtn_clicked()
{
    //获取输入时间
    QString timeString=ui->timeEdit->text();
    QTime time=QTime::fromString(timeString,"hh:mm:ss");//转换成时间类型
    //判断输入的时间是否合法
    if (time.isValid())
    {
        alarmTime = time;   //将输入时间赋给闹钟时间
        alarmSet = true;    //闹钟条件改为 是
    } else
    {
        QMessageBox::warning(this, "错误", "请输入有效的时间格式 (hh:mm:ss)");
    }
}

//取消按键的槽函数
void Widget::on_cancleBtn_clicked()
{
    alarmSet = false;
}

刷题:

相关推荐
hoiii1879 分钟前
CSTR反应器模型的Simulink-PID仿真(MATLAB实现)
开发语言·matlab
炘爚41 分钟前
C++ 右值引用与程序优化
开发语言·c++
si莉亚1 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源
清心歌1 小时前
CopyOnWriteArrayList 实现原理
java·开发语言
良木生香1 小时前
【C++初阶】C++入门相关知识(2):输入输出 & 缺省参数 & 函数重载
开发语言·c++
忘梓.1 小时前
墨色规则与血色节点:C++红黑树设计与实现探秘
java·开发语言·c++
hhh3u3u3u1 小时前
Visual C++ 6.0中文版安装包下载教程及win11安装教程
java·c语言·开发语言·c++·python·c#·vc-1
星河耀银海2 小时前
C++ 模板进阶:特化、萃取与可变参数模板
java·开发语言·c++
cccccc语言我来了2 小时前
【C++---unordered_set/map底层封装】个不拘一格的集合。它不似有序集合那般循规蹈矩,而是以一种洒脱不羁的方式,将元素们随意地散落其中。每一个元素都是独一无二的。
开发语言·c++·哈希算法
Zfox_2 小时前
C++ IO流全解析:标准库中的数据处理与文件读写艺术
开发语言·c++