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;
}

刷题:

相关推荐
论迹复利3 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
张宇Joaquin3 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c3 小时前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机3 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
LorryJovens5 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx6 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
卢锡荣7 小时前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
Freak嵌入式7 小时前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
Casual7 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php
cfm_29148 小时前
线程池阻塞队列
java·开发语言