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

QT作业1

1> 手写unique_ptr指针指针

代码:

#include <iostream>using namespace std;// 自定义的unique_ptr类模板
template <typename T>
class unique_ptr
{
public:// 构造函数,接收一个指针explicit unique_ptr(T* ptr = nullptr) noexcept : ptr_(ptr) {}// 析构函数,释放指针所指向的内存~unique_ptr(){delete ptr_;}// 禁用拷贝构造函数和赋值函数unique_ptr(const unique_ptr&) = delete;unique_ptr& operator=(const unique_ptr&) = delete;// 右值引用构造函数,接管另一个unique_ptr的所有权unique_ptr(unique_ptr&& other) noexcept : ptr_(other.ptr_){other.ptr_ = nullptr;}// 右值引用赋值函数,接管另一个unique_ptr的所有权unique_ptr& operator=(unique_ptr&& other) noexcept{if (this != &other){delete ptr_;ptr_ = other.ptr_;other.ptr_ = nullptr;}return *this;}// 重载*操作符,返回所指向对象的引用T& operator*() const{return *ptr_;}// 重载->操作符,返回所指向对象的指针T* operator->() const{return ptr_;}// 获取所指向对象的指针T* get() const noexcept{return ptr_;}// 释放所指向的对象,并将指针置为nullptrvoid reset(T* new_ptr = nullptr) noexcept{delete ptr_;ptr_ = new_ptr;}// 检查指针是否为空explicit operator bool() const noexcept{return ptr_ != nullptr;}private:T* ptr_; // 内置的指针,指向所管理的对象
};// 测试用例
struct MyClass
{MyClass(int value) : value_(value){cout << "用值调用MyClass构造函数: " << value << endl;}~MyClass(){cout << "用值调用MyClass析构函数: " << value_ << endl;}void printValue(){cout << "值: " << value_ << endl;}int value_;
};int main()
{// 使用unique_ptr管理MyClass对象的生命周期unique_ptr<MyClass> ptr(new MyClass(1));ptr->printValue(); // 使用->操作符访问成员函数(*ptr).printValue(); // 使用*操作符解引用并访问成员函数return 0;
}

运行结果:

2> 手写登录界面,不允许拖拽,要求尽可能的美观

代码:

MyWnd.h

#ifndef MYWND_H
#define MYWND_H    //防止文件重复包含#include <QWidget>        //QWidget类所在的头文件,父类头文件
#include<iostream>
#include<QDebug>
#include<QIcon>
#include<QPushButton>
#include<QLabel>
#include<QMovie>
#include<QLineEdit>QT_BEGIN_NAMESPACE
namespace Ui { class MyWnd; }          //命名空间的声明
QT_END_NAMESPACE//定义属于自己的类  MyWnd是类名,公共继承自QWidget
class MyWnd : public QWidget
{Q_OBJECT        //信号与槽的元对象public:MyWnd(QWidget *parent = nullptr);         //构造函数的声明,有一个默认参数的形参~MyWnd();                           //析构函数额声明public slots:void my_login();           //自定义槽函数的声明private:Ui::MyWnd *ui;             //后期可以通过ui指针找到ui界面上拖拽出来的组件QPushButton *btn1;QPushButton *btn3;QLineEdit *edit1;QLineEdit *edit2;QLabel *lab4;QLabel *lab5;
};
#endif // MYWND_H

MyWnd.cpp

#include "mywnd.h"              //自己的头文件
#include "ui_mywnd.h"          //ui界面对应的头文件MyWnd::MyWnd(QWidget *parent)            //构造函数的定义: QWidget(parent)                  //显性调用父类的构造函数完成对子类从父类继承下来成员的初始化工作, ui(new Ui::MyWnd)                //对自己类中的指针成员开辟空间
{ui->setupUi(this);         //给拖拽出来的组件实例化空间//1.有关当前界面的大小操作qDebug("hello %d",520);qDebug() << "hello world" << 520;//2.有关组件尺寸大小的相关内容qDebug()<<"this->size = "<<this->size();qDebug()<<"width = "<<this->width()<<"    heigh"<<this->height();qDebug()<<"width = "<<this->rect().width()<<"    heigh"<<this->rect().height();this->resize(400,300);      //更改当前界面尺寸this->resize(QSize(1000,800));  //使用类对象更改尺寸this->setMaximumSize(1000,900);     //设置最大尺寸this->setMinimumSize(200,100);      //设置最小尺寸this->setFixedSize(500,400);        //设置固定尺寸this->setWindowIcon(QIcon("C:\\Users\\xyh\\Desktop\\1.png"));//1.使用无参构造,构造按钮this->btn1 = new QPushButton;btn1->setParent(this);btn1->setText("登录");qDebug()<<"btn1.size = "<<btn1->size();btn1->resize(80,40);btn1->move(100,200);
//    btn1->setStyleSheet("background-color:skyblue; border-radius:10;");btn1->setIcon(QIcon("C:\\Users\\xyh\\Desktop\\1.png"));connect(this->btn1, &QPushButton::clicked, this, &MyWnd::my_login);//2.构造按钮时指定父组件
//    QPushButton *btn2 = new QPushButton(this);
//    btn2->setText("按钮2");
//    btn2->move(btn1->x()+btn1->width()+2,btn1->y());
//    btn2->resize(btn1->size());
//    btn2->setEnabled(false);//3.构造按钮时指定父组件并且设置文本this->btn3 = new QPushButton("取消",this);btn3->resize(btn1->size());btn3->move(btn1->x()+btn1->width()+2,btn1->y());connect(this->btn3, SIGNAL(clicked()), this, SLOT(close()));//4.构造按钮时指定父组件并且设置文本,并且设置按钮图标
//    QPushButton *btn4 = new QPushButton(QIcon("C:\\Users\\xyh\\Desktop\\1.png"),"注册",this);
//    btn4->resize(btn1->size());
//    btn4->move(btn3->x()+btn3->width()+2,btn3->y());//1.使用无参构造完成一个标签QLabel *lab1 =new QLabel;lab1->setParent(this);lab1->setText("账号:");lab1->move(btn1->x(),btn1->y()-90);//有参构造QLabel *lab2 =new QLabel("密码:",this);lab2->move(lab1->x(),lab1->y()+40);//有参构造QLabel *lab3 =new QLabel(this);lab3->resize(500,100);lab3->setStyleSheet("background-color:pink;");//有参构造this->lab4 =new QLabel("登录成功",this);lab4->resize(300,30);lab4->move(btn3->x(),btn3->y()+100);this->lab4->hide();//有参构造this->lab5 =new QLabel("登录失败,请重新登录",this);lab5->resize(300,30);lab5->move(btn3->x(),btn3->y()+100);this->lab5->hide();//给标签设置GIFQMovie *movie = new QMovie("C:\\Users\\xyh\\Desktop\\1.gif");lab3->setMovie(movie);movie->start();lab3->setScaledContents(true);//给标签设置静态图lab1->resize(30,30);lab1->setPixmap(QPixmap("C:\\Users\\xyh\\Desktop\\1.png"));lab1->setScaledContents(true);lab2->resize(30,30);lab2->setPixmap(QPixmap("C:\\Users\\xyh\\Desktop\\1.png"));lab2->setScaledContents(true);//无参构造行编辑器this->edit1 = new QLineEdit;edit1->setParent(this);edit1->resize(300,30);edit1->move(lab1->x()+lab1->width()+2,lab1->y());edit1->clear();edit1->setPlaceholderText("账号");//有参构造行编辑器this->edit2 = new QLineEdit("密码",this);edit2->resize(300,30);edit2->move(lab2->x()+lab2->width()+2,lab2->y());edit2->clear();edit2->setPlaceholderText("密码");edit2->setEchoMode(QLineEdit::Password);}MyWnd::~MyWnd()            //析构函数的定义
{delete ui;             //释放ui指针的内存
}void MyWnd::my_login()
{if(this->edit1->text() == this->edit2->text()){this->lab5->hide();this->lab4->show();
//        this->close();}else{this->lab4->hide();this->lab5->show();this->edit2->clear();}
}

运行结果:

3>思维导图

相关文章:

QT作业1

1> 手写unique_ptr指针指针 代码&#xff1a; #include <iostream>using namespace std;// 自定义的unique_ptr类模板 template <typename T> class unique_ptr { public:// 构造函数&#xff0c;接收一个指针explicit unique_ptr(T* ptr nullptr) noexcept …...

Mybatis-设计模式总结

1、Builder模式 Builder模式的定义是“将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。”&#xff0c;它属于创建类模式&#xff0c;一般来说&#xff0c;如果一个对象的构建比较复杂&#xff0c;超出了构造函数所能包含的范围&#x…...

【笔记】Java | 三目运算符和Math函数的比较

实际效果 比较两数并赋值&#xff0c;如下两种方法的耗时不会有差异。 result Math.min(result, subLen);result result < subLen ? result : subLen; 源码解析 因为源码Math.min的源码本质就算三目运算符的比较&#xff0c;所以执行结果是一样的。 三目运算符简介 概…...

信创实践(2):利用Leapp工具迁移CentOS至AnolisOS,实现系统升级与自主可控

1. 引言 为了满足用户在CentOS退出后对操作系统使用的诉求&#xff0c;OpenAnolis龙蜥社区正式发布了Anolis OS。越来越多的CentOS客户期望能够迁移到Anolis OS上来。操作系统迁移是一个复杂工程&#xff0c;手工迁移技术要求高&#xff0c;操作复杂度强&#xff0c;需要耗费大…...

数据库死锁查询SQL

Oracle 从Oracle数据库的动态性能视图&#xff08;Dynamic Performance Views&#xff09;中检索当前被锁定的数据库对象的相关信息&#xff0c;以及持有这些锁的会话&#xff08;session&#xff09;的详细信息。具体来说&#xff0c;它连接了v$ session和v$locked_object两个…...

vLLM (4) - LLMEngine上篇

系列文章目录 vLLM (1) - Qwen2推理&部署 vLLM (2) - 架构总览 vLLM (3) - Sequence & SequenceGroup vLLM (4) - LLMEngine上篇 vLLM (5) - LLMEngine下篇 文章目录 系列文章目录前言一、类图二、LLM三、LLMEngine四、GPUExectuor五、Worker六、ModelRunner七、Cache…...

Java重修笔记 第五十天 HashSet 和 TreeSet 的去重机制比较

HashSet 和 TreeSet 的去重机制比较 1. HashSet 的去重机制&#xff1a;HashCode() equals() 。通过运算得到 key &#xff0c;也就是该对象的哈希值&#xff0c;再通过哈希值得到该对象在 table 表上的索引位置&#xff0c;若该位置上没有链表数据就直接存放&#xff0c;若…...

提前购|基于SSM+vue的创新型产品提前购平台(源码+数据库+文档)

创新型产品提前购平台 基于SSMvue的创新型产品提前购平台 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 发布企业管理实现 个体管理实现 投资企业管理实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选…...

上海市计算机学会竞赛平台2024年7月月赛丙组求和问题

题目描述 给定 nn 个整数 a1,a2,…,ana1​,a2​,…,an​&#xff0c;请问这个序列最长有多少长的前缀&#xff0c;满足元素的和大于或等于 00&#xff1f;如果任何长度大于 00 的前缀之和都为负数&#xff0c;则输出 00 输入格式 第一行&#xff1a;单个整数表示 nn第二行&a…...

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 FeatureExtraction 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算&#xff08;calculateSmoothness()&#xff09;2. 标记遮挡点&#xff08;markOcc…...

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2757 标注数量(xml文件个数)&#xff1a;2757 标注数量(txt文件个数)&#xff1a;2757 标注…...

opencart journal 3 在价格前添加文本prefix

要修改的文件: /catalog/view/theme/journal3/template/product.twig 行274: <div class="product-price">{{ price }}</div>{% else %}<div class="product-price-new">{{ special }}</div><div class="product-pric…...

c++ string类的模拟实现的注意事项

一.构造函数 第一种形式&#xff0c;使用字符指针赋值 为了防止修改&#xff0c;我们传入了常量字符串。但是这里的初始化列表出错了&#xff0c;因为_str是一个变量&#xff0c;将常量给到一个变量涉及到权限的放大&#xff0c;是错误的。那该怎么写呢&#xff1f;对_str的赋…...

Unity3D中控制3D场景中游戏对象显示层级的详解

前言 在Unity3D开发中&#xff0c;控制游戏对象的显示层级&#xff08;也称为渲染顺序或渲染层级&#xff09;是一个常见的需求&#xff0c;特别是在处理复杂的3D场景时&#xff0c;如角色、道具、UI元素等的可见性和渲染顺序的管理变得尤为重要。Unity通过几种不同的机制来实…...

代码执行漏洞-Log4j2漏洞 vulhub CVE-2021-44228

步骤一:执行以下命令启动靶场环境并在浏览器访问!!! 查看端口 浏览器访问 可以发现 /solr/admin/cores?action 这⾥有个参数可以传&#xff0c;可以按照上⾯的原理 先构造⼀个请求传过去存在JNDI注⼊那么ldap服务端会执⾏我们传上去的payload JDNI项⽬地址 https://github.com…...

uniapp / uniapp x UI 组件库推荐大全

在 uniapp 开发中&#xff0c;我们大多数都会使用到第三方UI 组件库&#xff0c;提起 uniapp 的UI组件库&#xff0c;我们最常使用的应该就是uview了吧&#xff0c;但是随着日益增长的需求&#xff0c;uview 在某些情况下已经不在满足于我们的一些开发需求&#xff0c;尽管它目…...

花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?

我就是从培训机构学的网络安全&#xff0c;线下五六个月&#xff0c;当时学费不到一万&#xff0c;目前已成功入行。所以&#xff0c;只要你下决心要入这一行&#xff0c;过程中能好好学&#xff0c;那这8000就花得值~ 因为只要学得好&#xff0c;工作两个多月就能赚回学费&am…...

PhpStorm 下调试功能配置

调试是开发过程中的关键环节&#xff0c;能够极大地减少应用程序中的错误并提高代码质量。PhpStorm 作为一款功能强大的 IDE&#xff0c;提供了丰富的调试功能&#xff0c;结合 Xdebug&#xff0c;可以让开发者更轻松地进行 PHP 应用程序的调试。本指南将详细介绍如何在 PhpSto…...

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC&#xff08;Model-View-Controller&#xff09; 是一种常用的架构模式&#xff0c;用于分离应用程序的逻辑、数据和展示。它通过三个核心组件&#xff08;模型、视图和控制器&#xff09;将应用程序的业务逻辑与用户界面隔离&#xff0c;促进代码的可维护性、可扩展…...

【H2O2|全栈】关于HTML(4)HTML基础(三)

HTML相关知识 目录 HTML相关知识 前言 准备工作 标签的具体分类&#xff08;三&#xff09; 本文中的标签在什么位置中使用&#xff1f; 列表 ​编辑​编辑 有序列表 无序列表 自定义列表 表格 拓展案例 预告和回顾 后话 前言 本系列博客将分享HTML相关知识点…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...

基于Java项目的Karate API测试

Karate 实现了可以只编写Feature 文件进行测试,但是对于熟悉Java语言的开发或是测试人员,可以通过编程方式集成 Karate 丰富的自动化和数据断言功能。 本篇快速介绍在Java Maven项目中编写和运行测试的示例。 创建Maven项目 最简单的创建项目的方式就是创建一个目录,里面…...

比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表

设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

VUE3 ref 和 useTemplateRef

使用ref来绑定和获取 页面 <headerNav ref"headerNavRef"></headerNav><div click"showRef" ref"buttonRef">refbutton</div>使用ref方法const后面的命名需要跟页面的ref值一样 const buttonRef ref(buttonRef) cons…...