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

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...