当前位置: 首页 > news >正文

(定时器,绘制事件,qt简单服务器的搭建)2025.2.11

作业

笔记(复习补充)

1> 制作一个闹钟软件

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QPushButton>      //按钮类
#include <QTimer>           //定时器类
#include <QTime>            //时间类
#include <QLineEdit>        //单行文本输入框类
#include <QLabel>           //标签类
#include <QVBoxLayout>      //垂直布局类
#include <QHBoxLayout>      //水平布局类
#include <QDateTime>   // 包含QDateTime类,用于处理日期和时间
#include <QMessageBox> // 包含QMessageBox类,用于显示消息框QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
private slots:  //槽函数声明void updateTime();  // 更新显示的系统时间void startAlarm();  // 启动闹钟功能void cancelAlarm();  // 取消已设置的闹钟
private:Ui::Widget *ui;//声明指针变量等QLabel *Mylabel;    //标签对象指针,用于显示时间QLineEdit *Myline;  //单行输入框对象,用于输入闹钟时间QPushButton *Mybtn1; //按钮对象,用于启动闹钟(这两也可以只用一个)QPushButton *Mybtn2; //按钮对象,用于关闭闹钟QTimer *Mytimer;       //定时器对象,用于更新系统时间QTimer *mytimer1;      //定时器对象,用于触发对象bool myset;             //用于标记闹钟是否已经设置QVBoxLayout *MymainLayout;QHBoxLayout *MybuttonLayout;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//认父类,实例化this->Mytimer = new QTimer(this);this->mytimer1 = new QTimer(this);this->myset = false;//创建用户界面控件Mylabel = new QLabel("00:00:00",this);  //创建显示时间的标签Myline = new QLineEdit("00:00:00",this);//创建输入时间的文本Mybtn1 = new QPushButton("启动",this);    //创建启动闹钟的按钮Mybtn2 = new QPushButton("取消",this);    //创建取消闹钟的按钮// 设置布局管理器MymainLayout = new QVBoxLayout;  // 创建垂直布局管理器MybuttonLayout = new QHBoxLayout;  // 创建水平布局管理器MybuttonLayout->addWidget(Mybtn1);  // 将启动按钮添加到水平布局MybuttonLayout->addWidget(Mybtn2);  // 将取消按钮添加到水平布局MymainLayout->addWidget(Mylabel);  // 将时间标签添加到垂直布局MymainLayout->addWidget(Myline);  // 将时间输入框添加到垂直布局MymainLayout->addLayout(MybuttonLayout);  // 将水平布局添加到垂直布局// 设置主窗口的布局this->setLayout(MymainLayout);  // 将垂直布局设置为主窗口的布局// 连接信号和槽connect(Mytimer, &QTimer::timeout, this, &Widget::updateTime);  // 连接定时器信号到更新时间槽函数connect(Mybtn1, &QPushButton::clicked, this,&Widget::startAlarm);  // 连接启动按钮信号到启动闹钟槽函数connect(Mybtn2, &QPushButton::clicked, this,&Widget::cancelAlarm);  // 连接取消按钮信号到取消闹钟槽函数// 启动定时器Mytimer->start(1000);  // 设置定时器间隔为1秒}Widget::~Widget()
{delete ui;
}void Widget::updateTime()
{// 更新时间标签显示当前系统时间Mylabel->setText(QDateTime::currentDateTime().toString("hh:mm:ss"));
}void Widget::startAlarm()
{// 获取用户输入的时间并启动闹钟QString inputTime = Myline->text();  // 获取输入框中的时间if (!inputTime.isEmpty()) {QTime targetTime = QTime::fromString(inputTime, "hh:mm:ss");  // 将输入的时间字符串转换为QTime对象QDateTime currentTime = QDateTime::currentDateTime();  // 获取当前时间QDateTime targetDateTime = currentTime.addSecs(targetTime.msecsTo(currentTime.time()));  // 计算目标时间mytimer1->stop();  // 停止之前的定时器(如果有)mytimer1->setInterval(targetDateTime.msecsTo(QDateTime::currentDateTime()));  // 设置定时器间隔connect(mytimer1, &QTimer::timeout, this, [&]() {  // 连接定时器信号到槽函数QMessageBox::information(this, "Alarm", "Time's up!");  // 弹出闹钟提醒myset = false;  // 重置闹钟设置标记mytimer1->stop();  // 停止定时器});mytimer1->start();  // 启动定时器myset = true;  // 设置闹钟设置标记为已设置} else {QMessageBox::warning(this, "Warning", "Please set a valid time.");  // 提示用户输入有效时间}
}void Widget::cancelAlarm()
{// 取消已设置的闹钟if (myset) {Mytimer->stop();  // 停止定时器myset = false;  // 重置闹钟设置标记QMessageBox::information(this, "Alarm Canceled", "Alarm has been canceled.");  // 提示用户闹钟已取消}
}

2> 使用绘制实现,实现时钟(君子作业)

3> 将网络聊天室服务器端,重新实现一遍

4> 思维导图

5> 牛客网上 两个 28

相关文章:

(定时器,绘制事件,qt简单服务器的搭建)2025.2.11

作业 笔记&#xff08;复习补充&#xff09; 1> 制作一个闹钟软件 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QTimer> //定时器类 #include <QTime> //…...

C++17十大常用特性

玩转cpp小项目星球3周年了&#xff01; 今天分享两个知识点&#xff1a; C17我常用的十大特性。git am与git apply对patch处理的不同。...

【机器学习】超参数的选择,以kNN算法为例

分类准确度 一、摘要二、超参数的概念三、调参的方法四、实验搜索超参数五、扩展搜索范围六、考虑距离权重的kNN算法七、距离的计算方法及代码实现八、明可夫斯基距离的应用九、网格搜索超参数 一、摘要 本博文讲解了机器学习中的超参数问题&#xff0c;以K近邻算法为例&#…...

【RabbitMQ的监听器容器Simple和Direct】 实现和场景区别

在Spring Boot中&#xff0c;RabbitMQ的两种监听器容器&#xff08;SimpleMessageListenerContainer和DirectMessageListenerContainer&#xff09;在实现机制和使用场景上有显著差异。以下是它们的核心区别、配置方式及最佳实践&#xff1a; Simple类型 Direct类型 一、核心…...

NO.13十六届蓝桥杯备战|条件操作符|三目操作符|逻辑操作符|!||||(C++)

条件操作符 条件操作符介绍 条件操作符也叫三⽬操作符&#xff0c;需要接受三个操作数的&#xff0c;形式如下&#xff1a; exp1 ? exp2 : exp3条件操作符的计算逻辑是&#xff1a;如果 exp1 为真&#xff0c; exp2 计算&#xff0c; exp2 计算的结果是整个表达式的结果&am…...

2025.1.8(qt图形化界面之消息框)

笔记&#xff08;后期复习补充&#xff09; 作业 1> 手动将登录项目实现&#xff0c;不要使用拖拽编程 并且&#xff0c;当点击登录按钮时&#xff0c;后台会判断账号和密码是否相等&#xff0c;如果相等给出登录成功的提示&#xff0c;并且关闭当前界面&#xff0c;发射一…...

旅游行业内容管理系统CMS提升网站建设效率与体验

内容概要 在如今快速发展的互联网时代&#xff0c;旅游行业对网站的要求越来越高&#xff0c;内容管理系统&#xff08;CMS&#xff09;的应用不可或缺。以 Baklib 为代表的先进CMS可显著提高旅游网站的建设效率与用户体验。为了满足不断变化的市场需求&#xff0c;这些系统通…...

使用 Scrapy 抓取网页数据

1. Scrapy 简介 Scrapy 是一个流行的 Python 爬虫框架&#xff0c;提供了强大的工具和灵活的扩展机制&#xff0c;用于高效抓取和处理网页数据。它支持异步 I/O&#xff0c;速度快且资源消耗低&#xff0c;非常适合大规模爬取任务。 2. 安装 Scrapy 确保你的 Python 环境版本…...

C# OpenCV机器视觉:SoftNMS非极大值抑制

嘿&#xff0c;你知道吗&#xff1f;阿强最近可忙啦&#xff01;他正在处理一个超级棘手的问题呢&#xff0c;就好像在一个混乱的战场里&#xff0c;到处都是乱糟糟的候选框&#xff0c;这些候选框就像一群调皮的小精灵&#xff0c;有的重叠在一起&#xff0c;让阿强头疼不已。…...

kamailio关于via那点事

如果kamailio作为代理服务器&#xff0c;在转到目的路由时 不删除原始的via信息 会造成信息泄露 如果 Kamailio 作为代理服务器&#xff08;SIP Proxy&#xff09;在转发 SIP 请求时不删除原始的 Via 信息&#xff0c;这确实可能会造成信息泄露。 &#x1f4cc; 为什么不删除 …...

[MFC] 使用控件

介绍如何使用控件&#xff0c;以及如何获取控件中的数值 check Box 添加点击事件&#xff0c;即选中和取消选中触发的事件 第一种方式是按照如下方式第二种方式是直接双击点击进去 void CMFCApplication1Dlg::OnBnClickedCheckSun() {// TODO: 在此添加控件通知处理程序代…...

【探索未来科技】2025年国际学术会议前瞻

【探索未来科技】2025年国际学术会议前瞻 【探索未来科技】2025年国际学术会议前瞻 文章目录 【探索未来科技】2025年国际学术会议前瞻前言1. 第四届电子信息工程、大数据与计算机技术国际学术会议&#xff08; EIBDCT 2025&#xff09;代码示例&#xff1a;机器学习中的线性回…...

使用wpa_supplicant和wpa_cli 扫描wifi热点及配网

一&#xff1a;简要说明 交叉编译wpa_supplicant工具后会有wpa_supplicant和wpa_cli两个程序生产&#xff0c;如果知道需要连接的wifi热点及密码的话不需要遍历及查询所有wifi热点的名字及信号强度等信息的话&#xff0c;使用wpa_supplicant即可&#xff0c;否则还需要使用wpa_…...

Sealos的k8s高可用集群搭建

Sealos 介绍](https://sealos.io/zh-Hans/docs/Intro) Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具&#xff0c;能很好的支持在生产环境中部署高可用的 Kubernetes 集群。 Sealos 特性与优势 支持离线安装&#xff0c;工具与部署资源包分离&#…...

Android和DLT日志系统

1 Linux Android日志系统 1.1 内核logger机制 drivers/staging/android/logger.c static size_t logger_offset( struct logger_log *log, size_t n) { return n & (log->size - 1); } 写的off存在logger_log中&#xff08;即内核内存buffer&#xff09;&am…...

【openresty服务器】:源码编译openresty支持ssl,增加service系统服务,开机启动,自己本地签名证书,配置https访问

1&#xff0c;openresty 源码安装&#xff0c;带ssl模块 https://openresty.org/cn/download.html &#xff08;1&#xff09;PCRE库 PCRE库支持正则表达式。如果我们在配置文件nginx.conf中使用了正则表达式&#xff0c;那么在编译Nginx时就必须把PCRE库编译进Nginx&#xf…...

如何将网站提交百度收录完整SEO教程

百度收录是中文网站获取流量的重要渠道。本文以我的网站&#xff0c;www.mnxz.fun&#xff08;当然现在没啥流量&#xff09; 为例&#xff0c;详细讲解从提交收录到自动化维护的全流程。 一、百度收录提交方法 1. 验证网站所有权 1、登录百度搜索资源平台 2、选择「用户中心…...

【STM32】ADC|多通道ADC采集

本次实现的是ADC实现数字信号与模拟信号的转化&#xff0c;数字信号时不连续的&#xff0c;模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法&#xff0c;使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时&#xff0c;0~ 3.3v(模拟信…...

蓝桥杯算法日记|贪心、双指针

3412 545 2928 2128 贪心学习总结&#xff1a; 1、一般经常用到sort&#xff08;a&#xff0c;an&#xff09;&#xff1b;【a[n]】排序&#xff0c;可以给整数排&#xff0c;也可以给字符串按照字典序排序 2、每次选最优 双指针 有序数组、字符串、二分查找、数字之和、反转字…...

ArcGIS Pro SDK (二十七)自定义许可

ArcGIS Pro SDK (二十七)自定义许可 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 文章目录 ArcGIS Pro SDK (二十七)自定义许可1 在Config.xaml中添加扩展配置2 在Module1.cs中实现接口IExtensionConfig1 在Config.xaml中添加扩展配置 <modules><inse…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...