2024.9.10 作业

news2024/11/15 13:35:31

代码:

/*******************************************/

文件名:widget.h

/*******************************************/

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QTimeEdit>
#include <QTextEdit>
#include <QTimer>
#include <QPushButton>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr); // 构造函数
    ~Widget(); // 析构函数

private slots: // 槽函数
    void startTiming(); // 开始计时槽函数
    void stopTiming(); // 停止计时槽函数
    void checkTime(); // 检查时间槽函数
    void updateDateTime(); // 更新日期时间槽函数

private:
    Ui::Widget *ui; // 由 Qt Designer 自动生成的界面类
    QLabel *lab; // 显示日期时间的标签
    QTimeEdit *timeEdit; // 时间编辑控件
    QTextEdit *textEdit; // 文本编辑控件
    QPushButton *pbn1; // "启动"按钮
    QPushButton *pbn2; // "取消"按钮
    QTimer *timer; // 定时器
    QTimer *dateTimeTimer; // 用于更新日期时间的定时器
};

#endif // WIDGET_H

/*******************************************/

文件名:widget.cpp

/*******************************************/

#include "widget.h"
#include "ui_widget.h"
#include <QDateTime>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget),
    lab(new QLabel(this)),
    timeEdit(new QTimeEdit(this)),
    textEdit(new QTextEdit(this)),
    pbn1(new QPushButton("启动", this)),
    pbn2(new QPushButton("取消", this)),
    timer(new QTimer(this)),
    dateTimeTimer(new QTimer(this)) // 创建一个定时器用于更新日期时间
{
    ui->setupUi(this);
    this->resize(1000, 800);
    this->setWindowTitle("work");

    lab->setParent(this);
    lab->resize(300, 120);
    lab->setFont(QFont("Arial", 15));
    lab->setStyleSheet("QLabel { border: 2px solid black; border-radius: 10px; padding: 2px; }");
    lab->move(100, 100);
    updateDateTime();

    timeEdit->setDisplayFormat("HH:mm:ss");
    timeEdit->setTime(QTime::currentTime());
    timeEdit->resize(300, 50);
    timeEdit->move(600, 100);

    textEdit->resize(800, 470);
    textEdit->move(100, 230);

    pbn1->resize(120, 50);
    pbn1->move(600, 170);

    pbn2->resize(120, 50);
    pbn2->move(780, 170);

    connect(pbn1, &QPushButton::clicked, this, &Widget::startTiming);
    connect(pbn2, &QPushButton::clicked, this, &Widget::stopTiming);
    connect(timer, &QTimer::timeout, this, &Widget::checkTime);
    connect(dateTimeTimer, &QTimer::timeout, this, &Widget::updateDateTime);

    timer->setInterval(1000); // 每秒检查一次
    dateTimeTimer->start(1000); // 每秒更新时间
}

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

void Widget::startTiming()
{
    pbn1->setEnabled(false);
    pbn2->setEnabled(true);
    timeEdit->setEnabled(false);
    textEdit->setEnabled(false);
    timer->start(1000); // 每秒检查一次
}

void Widget::stopTiming()
{
    pbn1->setEnabled(true);
    pbn2->setEnabled(false);
    timeEdit->setEnabled(true);
    textEdit->setEnabled(true);
    timer->stop();
}

void Widget::checkTime()
{
    QString labelTime = lab->text().split(" ")[1].split(".")[0]; // 获取标签的时间部分
    if (labelTime == timeEdit->time().toString("HH:mm:ss")) {
        textEdit->setText("你好你好");
        stopTiming();
    }
}

void Widget::updateDateTime()
{
    lab->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
}

/*******************************************/

文件名:main.cpp

/*******************************************/

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

结果:

2024-09-10 20-26-18

思维导图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2122327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

opencv学习:信用卡卡号识别

该代码用于从信用卡图像中自动识别和提取数字信息。该系统将识别信用卡类型&#xff0c;并输出信用卡上的数字序列。 1.创建命令行参数 数字模板 信用卡 # 创建命令行参数解析器 ap argparse.ArgumentParser() # 添加命令行参数 -i/--image&#xff0c;指定输入图像路径 ap.…

破局DRG/DIP亏损,医院应该怎么做

DRG/DIP付费实施后&#xff0c;医院各临床科室可结合前期数据积累&#xff0c;根据DRG/DIP专科病组/病种四级手术占比与医疗收入占比之间的变化关系、建立DRG/DIP战略分布象限图&#xff0c;将病组分为优势病组&#xff08;病种&#xff09;、潜力病组&#xff08;病种&#xf…

线程(Thread)

目录 线程&#xff08;Thread&#xff09; 线程的创建方式 实现方式 Runnable和Callable的区别 线程的命名和优先级 线程的六种状态 线程的插队 线程的中断 线程的让出 守护线程 设置线程为守护线程 sleep()和wait()的区别 线程的同步synchronized锁 语法格式 实现…

在线动漫信息平台

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Spring Boot框架 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 首页 会员后台 管理员…

day-52 下一个排列

思路 从后向前遍历数组&#xff0c;把遍历过的元素加入一个有序链表&#xff0c;没变里一个元素判断链表中是否有元素大于当前遍历元素&#xff0c;如果有&#xff0c;把链表中大于当前遍历元素的元素集合中最小的那一个元素赋给当前元素&#xff0c;然后将链表中剩余元素依次赋…

建造者模式builder

此篇为学习笔记&#xff0c;原文链接 https://refactoringguru.cn/design-patterns/builder 能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象

JavaWeb【day14】--(SpingBoot原理)

SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇&#xff0c;主要偏向于底层原理。 我们今天的课程安…

2-2 opencv实战进阶系列 多边形识别

目录 一、不说废话&#xff0c;先上现象 二、前言 三、思路讲解 step1&#xff1a;用阈值编辑器对图像进行处理。 step2&#xff1a;应用阈值进行二值化 step3&#xff1a;轮廓查找 step4&#xff1a; 显示文字 四、完整代码贴出 五、现象展示 六、结语 一、不说废话&…

在单向链表中找环

在单向链表中找环也是有多种办法&#xff0c;不过快慢双指针方法是其中最为简洁的方法之一&#xff0c;接下来介绍这种方法。 首先两个指针都指向链表的头部&#xff0c;令一个指针一次走一步&#xff0c;另一个指针一次走两步&#xff0c;如果它们相遇了&#xff0c;证明有环…

数据结构(7.2_1)——顺序查找

顺序查找&#xff0c;又叫"线性查找"&#xff0c;通常用于线性表&#xff08;或者顺序表和链表&#xff09;。 算法思想&#xff1a;从头到尾全部查找出来&#xff08;或者反过来也OK&#xff09; 顺序查找的实现 typedef struct {//查找表的数据结构(顺序表)Elem…

再遇“类和对象”

一、类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会自动生成的成员函数称为默认成员函数。一个类&#xff0c;我们不写的情况下编译器会默认生成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是前4个&#xff0c;最后两个取地址重载不…

visio修改默认字体、颜色、形状格式、连接线格式

设计中取消勾选“将主题应用于新建的形状” 在开发工具中打开绘图资源管理器&#xff0c;并分别修改纯文本、连接线、主题的样式

文本转化为声音

在许多场景下需要将文本转化为MP3格式&#xff0c;本文将实现文本转化为声音&#xff0c;并且将声音保存为MP3格式。本文一朱自清的《春》为例&#xff0c;要实现阅读《春》并且转化为mp3格式的音频文件。 1 导入包 import pyttsx3 from docx import Document def read_word_…

ubuntu内核升级后的问题修复

文章目录 需求当前环境禁止内核更新安装内核修复/usr/include/dlocate 测试 需求 升级后的常见问题 驱动程序不兼容: 新内核版本可能导致某些硬件驱动程序不再兼容&#xff0c;尤其是专有驱动程序或第三方驱动程序。启动问题:内核更新可能导致启动问题&#xff0c;例如无法启动…

《创新电力巡检,机器人铸就安全高效未来》

近年来&#xff0c;我国电力建设投资额持续波动增长&#xff0c;至2023年底&#xff0c;全国电力工程投资总额高达14950亿元&#xff0c;同比增长22%。其中&#xff0c;电源工程建设和电网工程建设投资均达到新的高度。在这一背景下&#xff0c;电力行业对巡检工作的要求也日益…

苹果iOS/ iPadOS18 RC 版、17.7 RC版更新发布

iPhone 16 / Pro 系列新机发布后&#xff0c;苹果一同推出了 iOS 18 和 iPadOS 18 的 RC 版本&#xff0c;iOS 18 RC 的内部版本号为22A3354&#xff0c;本次更新距离上次发布 Beta/RC 间隔 12 天。 在 iOS 18 中&#xff0c;苹果给我们带来了 Apple Intelligence&#xff0c;这…

springboot高校兼职平台-计算机毕业设计源码65602

摘要 基于SpringBoot框架的高校兼职平台专注于为普通用户提供便捷的兼职信息服务。该平台包括普通用户功能、系统内容浏览、通知公告查看与论坛交流互动、兼职信息搜索与申请、个人中心管理和管理员权限管理等模块。利用SpringBoot框架实现了模块化开发和依赖注入&#xff0c;结…

驱动与应用的编译

无论是去驱动编译&#xff0c;还是应用编译&#xff0c;本质上都是用gcc这个工具&#xff0c;后面跟不同的参数来完成 驱动编译 放入内核编译 obj-y $(TARGET_SDK).o&#xff0c;就会直接将驱动编译成.o。供内核链接的时候&#xff0c;链接进整个内核镜像&#xff1b; obj-m…

Flutter自定义Icon的简易使用(两种)

方式一&#xff1a;利用第三方库&#xff08;建议&#xff09; 1、在阿里图标库(iconfont-阿里巴巴矢量图标库)上&#xff0c;加载购物车后&#xff0c;点击“下载素材”svg。 2、把下载的图片放入asstes目录下。​​​​​​​ 3、修改yaml配置文件&#xff0c;设置Icon图标所…

动态单窗口IP代理:提升网络操作的灵活性和安全性

互联网时代&#xff0c;各种网络工具层出不穷&#xff0c;而动态单窗口IP代理无疑成为了近年来的热门话题。今天&#xff0c;我们就来聊聊这个神奇的工具&#xff0c;看看它到底有什么独特之处。 什么是动态单窗口IP代理&#xff1f; 动态单窗口IP代理&#xff0c;顾名思义&a…