QT study DAY2
作业
代码
Widget.h
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void save_data(const QString& filename,const QString& data);
private slots:void on_lineEdit_textChanged(); //账户栏void on_lineEdit_2_textChanged(); //密码栏void on_radioButton_clicked(bool checked); //显示密码//新增代码void on_logButton_clicked(); //登录按钮void on_listWidget_itemDoubleClicked(QListWidgetItem *item); //listWidget双击private:Ui::Widget *ui;QFile file;
};
#endif // WIDGET_H
Widget.cpp
//新增代码//登录按键 点击事件
void Widget::on_logButton_clicked()
{QString name = ui->lineEdit->text();QList<QListWidgetItem *> res = ui->listWidget->findItems(name,Qt::MatchExactly);if(res.isEmpty()){ui->listWidget->addItem(name);}
}
//listWidget 双击事件
void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{int row = ui->listWidget->row(item);ui->listWidget->takeItem(row);
}
效果
双击之前
双击之后
作业
代码
Widget.h
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:// 数字按键部分void on_pushButton_0_clicked();void on_pushButton_1_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_4_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_8_clicked();void on_pushButton_9_clicked();// 加减乘除void on_pushButton_add_clicked();void on_pushButton_sub_clicked();void on_pushButton_mul_clicked();void on_pushButton_div_clicked();// 其他按键void on_pushButton_clear_clicked();void on_pushButton_res_clicked();
private:Ui::Widget *ui;QString str; // 第一个数QString ch; // 加减乘除QString str2; // 第二个数QString res; // 结果int line = 1; // 标志位
};
#endif
Widget.cpp
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}
/*************** 数字键盘区 ***************/
void Widget::on_pushButton_0_clicked()
{if(line == 1){str+='0';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='0';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_1_clicked()
{if(line == 1){str+='1';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='1';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_2_clicked()
{if(line == 1){str+='2';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='2';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_3_clicked()
{if(line == 1){str+='3';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='3';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_4_clicked()
{if(line == 1){str+='4';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='4';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_5_clicked()
{if(line == 1){str+='5';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='5';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_6_clicked()
{if(line == 1){str+='6';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='6';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_7_clicked()
{if(line == 1){str+='7';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='7';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_8_clicked()
{if(line == 1){str+='8';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='8';ui->mainLineEdit_2->setText(str2);}
}void Widget::on_pushButton_9_clicked()
{if(line == 1){str+='9';ui->mainLineEdit->setText(str);}else if(line == 0){str2+='9';ui->mainLineEdit_2->setText(str2);}
}
/*************** 加减乘除区 ***************/
void Widget::on_pushButton_add_clicked()
{ch = '+';line = 0;ui->label->setText("+");
}void Widget::on_pushButton_sub_clicked()
{ch = '-';line = 0;ui->label->setText("-");
}void Widget::on_pushButton_mul_clicked()
{ch = '*';line = 0;ui->label->setText("*");
}void Widget::on_pushButton_div_clicked()
{ch = '/';line = 0;ui->label->setText("/");
}/*************** 数字键盘区 ***************/
void Widget::on_pushButton_clear_clicked()
{if(line == 1){str.clear();ui->mainLineEdit->setText(str);}else if(line == 0){str2.clear();ui->mainLineEdit_2->setText(str2);}else if(line == 3){str.clear();str2.clear();ui->mainLineEdit->setText("");ui->mainLineEdit_2->setText("");ui->resEdit->setText("");line = 1;}
}
/*************** 数字键盘区 ***************/
void Widget::on_pushButton_res_clicked()
{//QString 转 intint index1 = str.toInt();int index2 = str2.toInt();//加减乘除if(ch == '+'){int int_res = index1 + index2;QString string_res = QString::number(int_res);ui->resEdit->setText(string_res);}else if(ch == '-'){int int_res = index1 - index2;QString string_res = QString::number(int_res);ui->resEdit->setText(string_res);}else if(ch == '*'){int int_res = index1 * index2;QString string_res = QString::number(int_res);ui->resEdit->setText(string_res);}else if(ch == '/'){int int_res = index1 / index2;QString string_res = QString::number(int_res);ui->resEdit->setText(string_res);}//说明计算完毕,再次点击C会清除所有line = 3;
}
效果
加减乘除
C键效果
相关文章:

QT study DAY2
作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void save_data(const QString& filename,const QString& data); private slots:void on_lineEdit_textChanged(); //账户栏void on_l…...

QT-自定义参数设计框架软件
QT-自定义参数设计框架软件 Chapter1 QT-自定义参数设计框架软件前言一、演示效果二、使用步骤1.应用进行参数注册2.数据库操作单例对象3.参数操作单例对象 三、下载链接 Chapter2 Qt中管理配置参数(QSettings、单例模式)1 前言2 QSettings类ini文件写in…...

VUE集成Live2d
VUE集成Live2d 目前基于大模型,可以实现一个桌面的3D动画小人,个人猜测可以简介这个项目进行实现 1-参考网址 试了很多项目,只有这个项目直观的把问题说清楚了 Live2D Vue3技术应用:https://blog.csdn.net/hh1233321/article/details/1406947…...
【CPP面经】科大讯飞 腾讯后端开发面经分享
文章目录 C 面试问题整理基础问题简答1. 内存对齐2. this 指针3. 在成员函数中删除 this4. 引用占用内存吗?5. C 越界访问场景6. 进程通信方式7. 无锁队列实现8. ping 在哪一层?实现原理?9. HTTPS 流程10. GDB 使用及 CPU 高使用定位11. 智能…...

el-card 结合 el-descriptions 作为信息展示
记录下el-card 组合 el-descriptions 实现动态展示信息 文章结构 实现效果1. el-descriptions 组件使用1.1 结合v-for实现列表渲染1.2 解析 2. 自定义 el-descriptions 样式2.1 修改背景色、字体颜色2.2 调整字体大小2.3 解析 3. el-card 结合 el-descriptions 作为信息展示3.…...
GaussDB自带诊断工具实战指南
一、引言 GaussDB是一种分布式的关系型数据库。在数据库运维中,快速定位性能瓶颈、诊断故障是保障业务连续性的关键。GaussDB内置了多种诊断工具,结合日志分析、执行计划解析和实时监控功能,帮助开发者与运维人员高效解决问题。本文深入讲解…...

LeetCode 链表章节
简单 21. 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2…...

SSL证书和HTTPS:全面解析它们的功能与重要性
每当我们在互联网上输入个人信息、进行在线交易时,背后是否有一个安全的保障?这时,SSL证书和HTTPS便扮演了至关重要的角色。本文将全面分析SSL证书和HTTPS的含义、功能、重要性以及它们在网络安全中的作用。 一、SSL证书的定义与基本概念 S…...

正交投影与内积空间:机器学习的几何基础
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 🔍 1. 内积空间的…...

Qt中txt文件输出为PDF格式
main.cpp PdfReportGenerator pdfReportGenerator;// 加载中文字体if (QFontDatabase::addApplicationFont(":/new/prefix1/simsun.ttf") -1) {QMessageBox::warning(nullptr, "警告", "无法加载中文字体");}// 解析日志文件QVector<LogEntr…...

《HelloGitHub》第 107 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
Langchain解锁LLM大语言模型的结构化输出能力(多种实现方案)
在 LangChain解锁LLM大语言模型的结构化输出能力:调用 with_structured_output() 方法 这篇博客中,我们了解了格式化LLM输出内容的必要性以及如何通过调用langchain框架中提供的 with_structured_output() 方法对LLM输出进行格式化(三种可选方…...

AI数据分析:deepseek生成SQL
在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行自动补全SQL 查询语句。 我们都知道,SQL 查询语…...
力扣-动态规划-115 不同子序列
思路 dp数组定义:0_i-1的字符串中有0_j-1的字符串有dp[i][j]个递推公式: if(s[i-1] t[j-1]){dp[i][j] dp[i-1][j-1] dp[i-1][j]; }else{dp[i][j] dp[i-1][j]; } 在该元素相同时,有两种可能1:使用该元素,所以0_i-2…...

Qt C++ 开发 动态上下页按钮实现
项目开发,想实现动态的显示按钮,考虑使用QStackedWidget做两个页面去切换。 首先,我们使用Qt ui 画出两个QStackedWidget的两个页面 要实现切换,我们只需要调用stackedWidget->setCurrentIndex(index)就行。 那么如何自动调…...

数据结构第五节:排序
1.常见的排序算法 插入排序:直接插入排序、希尔排序 选择排序:直接选择排序、堆排序 交换排序:冒泡排序、快速排序 归并排序:归并排序 排序的接口实现: // 1. 直接插入排序 void InsertSort(int* a, int n); // 2. 希…...

从文件到块: 提高 Hugging Face 存储效率
Hugging Face 在Git LFS 仓库中存储了超过30 PB 的模型、数据集和 Spaces。由于 Git 在文件级别进行存储和版本控制,任何文件的修改都需要重新上传整个文件。这在 Hub 上会产生高昂的成本,因为平均每个 Parquet 和 CSV 文件大小在 200-300 MB 之间&#…...
Android14 串口控制是能wifi adb实现简介
Android14 串口控制是能wifi adb实现简介 一、前言 文章目录 Android14 串口控制是能wifi adb实现简介一、前言二、Android14 串口控制是能wifi adb实现1、设置prop属性命令开启adb(1)相关prop属性设置(2)在设置界面或者 ifconfi…...
vue3中 组合式~测试深入组件:事件 与 $emit()
一、语法(props) 第一步:在组件模板表达式中,可以直接用$emit()方法触发自定义事件, <!-- MyComponent --> <button click"$emit(someEvent)">Click Me</button> 第二步父组件可以通过 v-on (缩写为 ) 来监听…...

SQL-labs13-16闯关记录
http://127.0.0.1/sqli-labs/less-13/ 基于POST单引号双注入变形 1,依然是一个登录框,POST型SQL注入 2,挂上burpsuite,然后抓取请求,构造请求判断漏洞类型和闭合条件 admin 发生了报错,根据提示闭合方式是(…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...