当前位置: 首页 > 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相关知识点…...

别只拿PotPlayer看片了!挖掘它的采集录制功能,做Switch游戏存档大师

别把PotPlayer当普通播放器&#xff01;解锁它的Switch游戏录制黑科技 你是否已经厌倦了在OBS、Bandicam等专业录制软件中反复调试参数的繁琐&#xff1f;是否想过那个每天用来看视频的PotPlayer&#xff0c;其实隐藏着令人惊喜的游戏录制能力&#xff1f;今天&#xff0c;我们…...

3步解锁专业级MMD创作:Blender插件如何重塑二次元动画工作流

3步解锁专业级MMD创作&#xff1a;Blender插件如何重塑二次元动画工作流 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …...

武汉国电华美串联谐振试验装置,现场用着心里有底

在高压试验现场干了这么多年&#xff0c;这位老师傅常说&#xff0c;一台好的串联谐振装置&#xff0c;就是试验人员的胆。面对GIS、大型变压器、超高压电缆这些大电容试品&#xff0c;没有趁手的谐振设备&#xff0c;交流耐压试验根本没法干。16875kVA/225kV这个规格&#xff…...

如何快速集成 react-native-bottom-sheet-behavior:5 分钟搞定 Android 底部弹窗

如何快速集成 react-native-bottom-sheet-behavior&#xff1a;5 分钟搞定 Android 底部弹窗 【免费下载链接】react-native-bottom-sheet-behavior react-native wrapper for android BottomSheetBehavior 项目地址: https://gitcode.com/gh_mirrors/re/react-native-bottom…...

脉冲神经网络加速器设计与边缘计算优化

1. 脉冲神经网络加速器的设计挑战与突破在边缘计算领域&#xff0c;脉冲神经网络(SNN)正以其独特的生物启发特性引发新一轮技术变革。与传统人工神经网络(ANN)相比&#xff0c;SNN通过离散的脉冲信号传递信息&#xff0c;模拟生物神经元的工作机制&#xff0c;理论上可实现超低…...

原神私服新纪元:KCN-GenshinServer图形化服务端全功能解析

原神私服新纪元&#xff1a;KCN-GenshinServer图形化服务端全功能解析 【免费下载链接】KCN-GenshinServer 基于GC制作的原神一键GUI多功能服务端。 项目地址: https://gitcode.com/gh_mirrors/kc/KCN-GenshinServer 你是否曾想过拥有一个完全由自己掌控的提瓦特大陆&am…...

用ESP32-C3的PWM做个RGB呼吸灯吧:从配置结构体到色彩渐变(乐鑫ESP-IDF实战)

ESP32-C3 RGB呼吸灯实战&#xff1a;从PWM配置到色彩渐变算法 当智能家居的灯光不再只是简单的开关控制&#xff0c;而是能像呼吸般自然渐变时&#xff0c;整个空间的氛围立刻变得生动起来。ESP32-C3凭借其出色的LED PWM控制器&#xff08;LEDC&#xff09;外设&#xff0c;为开…...

告别Windows卡顿!在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南

告别Windows卡顿&#xff01;在VMware里给Kubuntu 22.04 LTS分区和安装的保姆级避坑指南你是否已经厌倦了Windows系统越来越慢的启动速度、频繁的后台更新和资源占用&#xff1f;当你的电脑开始频繁卡顿&#xff0c;或许该考虑给系统来一次"减负"了。Kubuntu 22.04 L…...

UE5项目打包后RenderTarget导出图片全黑?手把手教你解决伽马校正与资产打包问题

UE5打包后RenderTarget导出图片全黑的终极解决方案当你花了整整三天时间调试RenderTarget导出功能&#xff0c;终于在编辑器里看到完美的截图效果&#xff0c;却在打包成可执行文件后发现所有导出的图片都变成了一片漆黑——这种从云端跌入谷底的感觉&#xff0c;每个UE开发者都…...

基于BLE模块的低功耗无线遥控器设计与实现

1. 项目概述&#xff1a;基于BLE模块的无线遥控器设计与实现几年前&#xff0c;我在捣鼓智能家居时&#xff0c;一直想找一个低功耗、响应快、又能自己完全掌控的无线遥控方案。市面上的成品要么协议封闭&#xff0c;要么功耗感人&#xff0c;要么延迟高得让人着急。后来&#…...