2025.2.11

1> 制作一个闹钟软件

.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QTime>
#include <QTimer>
#include <QTimeEdit>
#include <QDateEdit>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;QPushButton *btn1;QPushButton *btn2;QLabel *lab;QLineEdit *edit;QTimer *timer;QTimeEdit *timeedit;QTime alarmTime;bool alarmSet;
private slots:void update_slot();void setAlarm_slot();void cancel_slot();
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QTime>
#include <QTimer>
#include <string>
#include <QMessageBox>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);setFixedSize(800,400);//创建垂直布局//获取标签QLabel *lab = new QLabel(this);lab->setGeometry(80,50,200,50);lab->setStyleSheet("border: 2px solid black;"      // 黑色边框,宽度为2px"border-radius: 5px;"           // 边框圆角,值越大圆角越明显"background-color: lightgray;"  // 背景颜色"font: 16px Arial;"             // 字体和大小);QLabel *lab1 = new QLabel(this);lab1->setGeometry(30,180,740,220);lab1->setStyleSheet("border: 2px solid black;"      // 黑色边框,宽度为2px"border-radius: 5px;"           // 边框圆角,值越大圆角越明显"background-color: lightgray;"  // 背景颜色"font: 16px Arial;"             // 字体和大小);// 设置标签的文本内容QString motivationalText = "三更灯火五更鸡,\n正是男儿读书时,\n黑发不知勤学早,\n白手方悔读书迟。";// 设置文本对齐方式,居中显示lab1->setText(motivationalText);lab1->setAlignment(Qt::AlignCenter);  // 设置文本居中//创建时间选择器timeedit = new QTimeEdit(this);timeedit->setGeometry(450,50,250,50);timeedit->setDisplayFormat("HH:mm:ss");timeedit->setTime(QTime::currentTime());//设置按钮btn1 = new QPushButton(this);//启动btn2 = new QPushButton(this);//取消btn1->setGeometry(450,110,65,30);btn2->setGeometry(600,110,65,30);btn1->setText("启动");btn2->setText("取消");//获取系统当前的时间QTime sysTime = QTime::currentTime();//将时间转化为字符串QString t = sysTime.toString("hh:mm:ss");lab->setText(t);//创建定时器timer = new QTimer(this);connect(timer,&QTimer::timeout,this,&Widget::update_slot);//启动定时器timer->start(1000);//连接按钮点击事件connect(btn1,&QPushButton::clicked,this,&Widget::setAlarm_slot);connect(btn2,&QPushButton::clicked,this,&Widget::cancel_slot);//初始化闹钟alarmSet = false;}void Widget::update_slot()
{//每秒获取当前时间并更新//获取系统当前的时间QTime sysTime = QTime::currentTime();//将时间转化为字符串QString t = sysTime.toString("hh:mm:ss");// 获取父类窗口中的lab标签,并更新文本QLabel *lab = findChild<QLabel *>();if (lab){lab->setText(t);}//判断闹钟if(alarmSet && sysTime >= alarmTime ){QMessageBox::information(this,"闹钟","时间到");alarmSet = false;}
}Widget::~Widget()
{delete ui;
}
//设置
void Widget::setAlarm_slot()
{//获取设置的闹钟时间alarmTime = timeedit->time();//启动闹钟if(!alarmSet){alarmSet = true;QMessageBox::information(this, "闹钟", "闹钟已启动");}else{QMessageBox::information(this, "闹钟", "无法重复设置");}
}
//取消
void Widget::cancel_slot()
{//timer->stop();alarmSet = false;QMessageBox::information(this, "闹钟取消", "闹钟已取消");
}

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

.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpServer>          //服务器类
#include <QTcpSocket>          //客户端类
#include <QVector>             //动态数组类
#include <QMessageBox>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_startbtn_clicked();void newConnect_slot();void readyRead_slot();
private:Ui::Widget *ui;QTcpServer *server;QVector<QTcpSocket*> client_vector;
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//实例化一个服务器对象server = new QTcpServer(this);//将服务器的newConnect信号连接到自定义的槽函数中connect(server,&QTcpServer::newConnection,this,&Widget::newConnect_slot);
}Widget::~Widget()
{delete ui;
}void Widget::on_startbtn_clicked()
{quint16 port = ui->portedit->text().toUInt();//启动服务器//函数原型:bool listen(const)if(server->listen(QHostAddress::Any,port)){QMessageBox::information(this,"提示","服务器打开成功");}else{QMessageBox::information(this,"提示","服务器打开失败");return;}
}
//newConnect对应槽函数的实现
void Widget::newConnect_slot()
{qDebug()<<"有新的客户端连接成功";//获取最新连接的客户端套接字QTcpSocket *s = server->nextPendingConnection();//QString msg = "我是zpp";//s->write(msg.toLocal8Bit());//将客户端套接字放入到客户端容器中client_vector.push_back(s);//此时就可以完成一个服务器对应多个客户端//如果此时,当前客户端有消息发送到服务器中,那么该客户端会自动发送一个readyread信号//我们可以将该信号连接到自定义的槽函数中执行相关逻辑connect(s,&QTcpSocket::thread,this,&Widget::readyRead_slot);
}//readyRead信号对应的槽函数
void Widget::readyRead_slot()
{//判断是哪个客户端发来消息for(int i=0;i<client_vector.size();i++){//client_vector[i],表示的是任意一个客户端if(client_vector[i]->bytesAvailable()!=0){//表示当前客户端有消息可读取QByteArray msg = client_vector[i]->readAll();//将QByteArray类型转换为QString类型QString msg_string = QString::fromLocal8Bit(msg);//将消息展示在ui界面上ui->msgwidget->addItem(msg_string);//将消息转发给所有客户端,无需转发自己for(int j=0;j<client_vector.size();j++){if(i!=j){client_vector[j]->write(msg);}}}}
}

4> 思维导图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

和鲸科技上线 DeepSeek 系列模型服务,助力数智企业 AI 业务创新!

近日&#xff0c;和鲸科技团队宣布旗下数据科学协同平台 ModelWhale 实现对 DeepSeek 全系列大模型的深度支持&#xff0c;旨在帮助更多数智化转型企业提供从算力基建到业务融合的全栈式解决方案&#xff0c;快速搭建自主可控的云端智能服务体系&#xff0c;实现大模型与业务系…

使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器进行模型检查点处理

2023 年 11 月&#xff0c;Amazon 宣布推出适用于 PyTorch 的 S3 连接器。适用于 PyTorch 的 Amazon S3 连接器提供了专为 S3 对象存储构建的 PyTorch 数据集基元&#xff08;数据集和数据加载器&#xff09;的实现。它支持用于随机数据访问模式的地图样式数据集和用于流式处理…

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发(文末联系,整套资料提供)

基于 SpringBoot 和 Vue 的智能腰带健康监测数据可视化平台开发 一、系统介绍 随着人们生活水平的提高和健康意识的增强&#xff0c;智能健康监测设备越来越受到关注。智能腰带作为一种新型的健康监测设备&#xff0c;能够实时采集用户的腰部健康数据&#xff0c;如姿势、运动…

【cocos creator】拖拽排序列表

DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…

Vision Transformer:打破CNN垄断,全局注意力机制重塑计算机视觉范式

目录 引言 一、ViT模型的起源和历史 二、什么是ViT&#xff1f; 图像处理流程 图像切分 展平与线性映射 位置编码 Transformer编码器 分类头&#xff08;Classification Head&#xff09; 自注意力机制 注意力图 三、Coovally AI模型训练与应用平台 四、ViT与图像…

国产编辑器EverEdit - 编辑辅助功能介绍

1 编辑辅助功能 1.1 各编辑辅助选项说明 1.1.1 行号 打开该选项时&#xff0c;在编辑器主窗口左侧显示行号&#xff0c;如下图所示&#xff1a; 1.1.2 文档地图 打开该选项时&#xff0c;在编辑器主窗口右侧靠近垂直滚动条的地方显示代码的缩略图&#xff0c;如下图所示&…

Spring AI 介绍

文章来源&#xff1a;AI 概念 (AI Concepts) _ Spring AI1.0.0-SNAPSHOT中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍 Spring AI 使用的核心概念。我们建议仔细阅读它&#xff0c;以了解 Spring AI 是如何实现的。 模型 AI 模型是旨在处理和生成…

Spring MVC 拦截器(Interceptor)与过滤器(Filter)的区别?

1、两者概述 拦截器&#xff08;Interceptor&#xff09;&#xff1a; 只会拦截那些被 Controller 或 RestController 标注的类中的方法处理的请求&#xff0c;也就是那些由 Spring MVC 调度的请求。过滤器&#xff08;Filter&#xff09;&#xff1a; 会拦截所有类型的 HTTP …

qt QCommandLineOption 详解

1、概述 QCommandLineOption类是Qt框架中用于解析命令行参数的类。它提供了一种方便的方式来定义和解析命令行选项&#xff0c;并且可以与QCommandLineParser类一起使用&#xff0c;以便在应用程序中轻松处理命令行参数。通过QCommandLineOption类&#xff0c;开发者可以更便捷…

Flink KafkaConsumer offset是如何提交的

一、fllink 内部配置 client.id.prefix&#xff0c;指定用于 Kafka Consumer 的客户端 ID 前缀partition.discovery.interval.ms&#xff0c;定义 Kafka Source 检查新分区的时间间隔。 请参阅下面的动态分区检查一节register.consumer.metrics 指定是否在 Flink 中注册 Kafka…

从Word里面用VBA调用NVIDIA的免费DeepSeekR1

看上去能用而已。 选中的文字作为输入&#xff0c;运行对应的宏即可&#xff1b;会先MSGBOX提示一下&#xff0c;然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…

网络工程师 (29)CSMA/CD协议

前言 CSMA/CD协议&#xff0c;即载波监听多路访问/碰撞检测&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;协议&#xff0c;是一种在计算机网络中&#xff0c;特别是在以太网环境下&#xff0c;用于管理多个设备共享同一物理传输介质的重要…

WPS中如何批量上下居中对齐word表格中的所有文字

大家好&#xff0c;我是小鱼。 在日常制作Word表格时&#xff0c;经常需要对表格中的内容进行排版。经常会把文字设置成左对齐、居中对齐或者是右对齐&#xff0c;这些对齐方式都比较好设置&#xff0c;有时制作的表格需要把文字批量上下居中对齐&#xff0c;轻松几步就可以搞…

GeekPad智慧屏编程控制

前面通过homeassistant和emqx一番折腾&#xff0c;已经可以控制GeekPad智慧屏的开关了。但是这中间用到的软件对环境依赖非常高&#xff0c;想再优化一下&#xff0c;把这两个工具都装到手机上&#xff0c;最后勉强实现了&#xff0c;但是还得借用模拟器和容器&#xff0c;稳定…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

可编程网卡芯片在京东云网络的应用实践【BGW边界网关篇】

目录导览 文章背景 一.网关问题分析 BGW专线网关机器运维变更困难 BGW专线网关故障收敛链路复杂且长 BGW专线网关不具备异构架构下的灾备能力 BGW专线网关硬件资源成本居高不下 二.技术方案设计实现 网络拓扑规划与VIP架构升级 硬件实现与N-Tb流量平滑迁移 三.落地…

接口测试Day12-持续集成、git简介和安装、Gitee远程仓库、jenkins集成

持续集成 概念&#xff1a; 团队成员将自己的工作成果&#xff0c;持续集成到一个公共平台的过程。成员可以每天集成一次&#xff0c;也可以一天集成多 次。 相关工具&#xff1a; 本地代码管理&#xff1a;git远程代码管理&#xff1a;gitee(国内)、github(国外)、gitlib(公司…

前端快速生成接口方法

大家好&#xff0c;我是苏麟&#xff0c;今天聊一下OpenApi。 官网 &#xff1a; umijs/openapi - npm 安装命令 npm i --save-dev umijs/openapi 在根目录&#xff08;项目目录下&#xff09;创建文件 openapi.config.js import { generateService } from umijs/openapi// 自…

三角测量——用相机运动估计特征点的空间位置

引入 使用对极约束估计了相机运动后&#xff0c;接下来利用相机运动估计特征点的空间位置&#xff0c;使用的方法就是三角测量。 三角测量 和对极几何中的对极几何约束描述类似&#xff1a; z 2 x 2 R ( z 1 x 1 ) t z_2x_2R(z_1x_1)t z2​x2​R(z1​x1​)t 经过对极约束…

WPS计算机二级•文档的文本样式与编号

听说这是目录哦 标题级别❤️新建文本样式 快速套用格式&#x1fa77;设置标题样式 自定义设置多级编号&#x1f9e1;使用自动编号&#x1f49b;取消自动编号&#x1f49a;设置 页面边框&#x1f499;添加水印&#x1fa75;排版技巧怎么分栏&#x1f49c;添加空白下划线&#x…