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

刷题:

相关推荐
猫生鱼23 分钟前
qml中的TextArea使用QSyntaxHighlighter显示高亮语法
c++·qt
黄雪超33 分钟前
JVM——即时编译器的中间表达形式
java·开发语言·jvm
黄雪超37 分钟前
JVM——即时编译
java·开发语言·jvm
长袖格子衫40 分钟前
第五节:对象与原型链:JavaScript 的“类”与“继承”
开发语言·javascript·原型模式
咖啡の猫42 分钟前
JavaScript基础-全局作用域
开发语言·javascript
西京刀客3 小时前
Go多服务项目结构优化:为何每个服务单独设置internal目录?
开发语言·后端·golang
每次的天空3 小时前
Android Handler 机制面试总结
java·开发语言·jvm
举一个梨子zz3 小时前
Java—— 集合 List
java·开发语言·数据结构·intellij-idea
passionSnail3 小时前
《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-贪吃蛇的百变玩法:从命令行到AI对战
开发语言·matlab·游戏程序
李匠20243 小时前
C++GO语言微服务之gorm框架操作MySQL
开发语言·c++·后端·golang