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

QT-信号与槽

1.在注册登录的练习里面,追加一个QListWidget项目列表
要求:点击注册之后,将账号显示到列表窗口小部件上面去
以及,在列表窗口小部件中双击某个账号的时候,将该账号删除

头文件

#ifndef WIDGET_H
#define WIDGET_H
#include <QListWidgetItem>
#include <QWidget>
#include <QFile>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();void save_data(const QString& filename,const QString& data);QString load_Data(const QString& filename);//从filename文件中加载数据并以返回值返回
private slots:void on_lineEdit_2_textChanged(const QString &arg1);void on_lineEdit_textChanged(const QString &arg1);void on_pushButton_3_pressed();void on_pushButton_3_released();void on_checkBox_stateChanged(int state);void on_pushButton_2_clicked();void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui;QFile file;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//记住账号QString name = load_Data("D:/name.txt");ui->lineEdit_2->setText(name);//判断上次退出前勾选的状态QString ischecked = load_Data("D:/ischeck.txt");if(ischecked=="1")//已经勾选{ui->checkBox->setChecked(1);//进入勾选状态}//记住密码if(ui->checkBox->isChecked())//是勾选状态{QString pswd = load_Data("D:/pswd.txt");ui->lineEdit->setText(pswd);}
}Widget::~Widget()
{QString name =ui->lineEdit_2->text();//记住账号save_data("D:/name.txt",name);QString pswd =ui->lineEdit->text();//记住密码save_data("D:/pswd.txt",pswd);delete ui;
}void Widget::save_data(const QString &filename, const QString& data)
{file.setFileName(filename);//设定文件名file.open(QFile::WriteOnly);//选择打开模式并打开file.write(data.toLocal8Bit());//把Qstring转换为QbyteArrayfile.close();
}QString Widget::load_Data(const QString &filename)
{file.setFileName(filename);file.open(QFile::ReadOnly);QByteArray arr= file.readAll();QString str = QString::fromLocal8Bit(arr);//把QbyteArray转换为Qstringfile.close();return str;
}//账号编辑器发生改变时触发的槽函数
void Widget::on_lineEdit_2_textChanged(const QString &arg1)
{QString name = ui->lineEdit->text();QString pswd = ui->lineEdit_2->text();if(name.isEmpty()||pswd.isEmpty())//判断账号和密码是否有空的{ui->pushButton->setEnabled(0);//按钮不可按ui->pushButton_2->setEnabled(0);}else{ui->pushButton->setEnabled(1);//按钮可按ui->pushButton_2->setEnabled(1);}
}
//密码编辑器发生改变时触发的槽函数
void Widget::on_lineEdit_textChanged(const QString &arg1)
{QString name = ui->lineEdit->text();QString pswd = ui->lineEdit_2->text();if(name.isEmpty()||pswd.isEmpty()){ui->pushButton->setEnabled(0);ui->pushButton_2->setEnabled(0);}else{ui->pushButton->setEnabled(1);ui->pushButton_2->setEnabled(1);}
}
//显示密码按钮按下
void Widget::on_pushButton_3_pressed()
{ui->lineEdit->setEchoMode(QLineEdit::Normal);//显示密码
}
//显示密码按钮抬起来
void Widget::on_pushButton_3_released()
{ui->lineEdit->setEchoMode(QLineEdit::Password);//隐藏密码
}void Widget::on_checkBox_stateChanged(int state)
{if(state==0)//未勾选{save_data("D:/ischeck.txt","0");}else{//勾选save_data("D:/ischeck.txt","1");}
}void Widget::on_pushButton_2_clicked()
{QString name =ui->lineEdit_2->text();//获取当前账号文本QString base =load_Data("D:/name.txt");//获取文件内账号文本if(name!=base){save_data("D:/name.txt",name);QString str =load_Data("D:/name.txt");ui->listWidget->addItem(str);//添加到Listwidget中}else{}
}void Widget::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{ui->listWidget->clear();
}

测试文件

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

2.完成一个计算器,ui界面如下
完成+-*/计算功能并且在对应位置显示对应的数据

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_pushButton_9_clicked();void on_pushButton_10_clicked();void on_pushButton_11_clicked();void on_pushButton_5_clicked();void on_pushButton_6_clicked();void on_pushButton_7_clicked();void on_pushButton_clicked();void on_pushButton_2_clicked();void on_pushButton_3_clicked();void on_pushButton_14_clicked();void on_pushButton_16_clicked();void on_pushButton_12_clicked();void on_pushButton_8_clicked();void on_pushButton_4_clicked();void on_pushButton_15_clicked();void on_pushButton_13_clicked();private:Ui::Widget *ui;bool flag;QString symbol;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//数值按钮
void Widget::on_pushButton_9_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"1");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"1");}
}void Widget::on_pushButton_10_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"2");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"2");}
}void Widget::on_pushButton_11_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"3");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"3");}
}void Widget::on_pushButton_5_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"4");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"4");}
}void Widget::on_pushButton_6_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"5");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"5");}
}void Widget::on_pushButton_7_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"6");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"6");}
}void Widget::on_pushButton_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"7");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"7");}
}void Widget::on_pushButton_2_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"8");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"8");}
}void Widget::on_pushButton_3_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"9");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"9");}
}void Widget::on_pushButton_14_clicked()
{if(flag == 0){QString str = ui->lineEdit->text();ui->lineEdit->setText(str+"0");}else{QString str = ui->lineEdit_2->text();ui->lineEdit_2->setText(str+"0");}
}//符号按钮
//+
void Widget::on_pushButton_16_clicked()
{flag = 1;symbol = "+";ui->label->setText("+");
}//-
void Widget::on_pushButton_12_clicked()
{flag = 1;symbol = "-";ui->label->setText("-");
}//*
void Widget::on_pushButton_8_clicked()
{flag = 1;symbol = "*";ui->label->setText("*");
}//"/"
void Widget::on_pushButton_4_clicked()
{flag = 1;symbol = "/";ui->label->setText("/");
}//=
void Widget::on_pushButton_15_clicked()
{QString str = ui->lineEdit->text();QString ptr = ui->lineEdit_2->text();double x = str.toInt();double y = ptr.toInt();if(symbol == "+"){double num = x + y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "-"){double num = x - y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "*"){double num = x * y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}if(symbol == "/"){double num = x / y;QString str = QString::number(num);ui->lineEdit_3->setText(str);}
}//"清除"
void Widget::on_pushButton_13_clicked()
{flag = 0;ui->lineEdit->clear();ui->lineEdit_2->clear();ui->lineEdit_3->clear();ui->label->clear();
}

测试文件

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

相关文章:

QT-信号与槽

1.在注册登录的练习里面&#xff0c;追加一个QListWidget项目列表 要求:点击注册之后&#xff0c;将账号显示到列表窗口小部件上面去 以及&#xff0c;在列表窗口小部件中双击某个账号的时候&#xff0c;将该账号删除 头文件 #ifndef WIDGET_H #define WIDGET_H #include <…...

版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点

版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点 引言正文定义坐标点的类绘图显示代码直接连接两个坐标点引言 由于人工智能的加速普及,每次手动绘制版图都会觉得特别繁琐,作者本人在想可否搞一个自动化连接器件端口的算法,后期可以根据一些设定的限制进行避…...

迷你世界脚本方块接口:Block

方块接口&#xff1a;Block 彼得兔 更新时间: 2024-08-27 11:04:56 具体函数名及描述如下&#xff1a; 序号 函数名 函数描述 1 isSolidBlock(...) 是否是固体方块 2 isLiquidBlock(...) 是否是液体方块 3 isAirBlock(...) 是否是气体方块 4 getBl…...

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第一天)

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线&#xff08;第一天&#xff09; 前言最后 前言 说真的&#xff0c;用Unity工作这几年&#xff0c;经历的项目大大小小&#xff0c;对于场景的渲染算是有一定的经验&#xff0c;但涉及到HDRP高清渲染管线的了解&#xff0…...

Docker项目部署-部署前端

nginx.conf文件内容如下。 worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/json;sendfile on;keepalive_timeout 65;server {listen 18080;# 指定前端项目所在的位置location / {root /usr/…...

【向量数据库Weaviate】与ChromaDB的差异、优劣

以下是 Weaviate 和 ChromaDB 的详细对比&#xff0c;涵盖设计目标、核心功能、性能、适用场景及优劣势分析&#xff1a; 1. 核心定位与设计目标 维度WeaviateChromaDB类型向量数据库 图数据库&#xff08;支持混合搜索&#xff09;轻量级纯向量数据库&#xff08;专注嵌入存…...

2024华为OD机试真题-热点网站统计(C++)-E卷-100分

2024华为OD机试最新E卷题库-(C卷+D卷+E卷)-(JAVA、Python、C++) 目录 题目描述 输入描述 输出描述 用例1 用例2 考点 题目解析 代码 c++ 题目描述 企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页 URL top N。 请设计一个算法,可以高效动态统计 …...

【大模型】大模型分类

大模型&#xff08;Large Models&#xff09;通常指参数量巨大、计算能力强大的机器学习模型&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;、计算机视觉&#xff08;CV&#xff09;等领域表现突出。以下是大模型的常见分类方式&#xff1a; 1. 按应用领域分类 …...

Redis 的几个热点知识

前言 Redis 是一款内存级的数据库&#xff0c;凭借其卓越的性能&#xff0c;几乎成为每位开发者的标配工具。 虽然 Redis 包含大量需要掌握的知识&#xff0c;但其中的热点知识并不多。今天&#xff0c;『知行』就和大家分享一些 Redis 中的热点知识。 Redis 数据结构 Redis…...

【新手入门】SQL注入之getshell(木马)

木马介绍 木马其实就是一段程序&#xff0c;这个程序运行到目标主机上时&#xff0c;主要可以对目标进行远程控制、盗取信息等功能&#xff0c;一般不会破坏目标主机&#xff0c;当然&#xff0c;这也看黑客是否想要搞破坏。 按照功能分类:远控型、破坏型、流氓软件型、盗取信…...

【pytest框架源码分析二】pluggy源码分析之add_hookspecs和register

这里我们看一下_manager.py里的类和方法&#xff0c;最主要的是PluginManager类&#xff0c;类的初始化函数如下&#xff1a; class PluginManager:"""Core class which manages registration of plugin objects and 1:N hookcalling.You can register new hoo…...

四、数据存储

在爬虫项目中&#xff0c;我们需要将目标站点数据进行持久化保存&#xff0c;一般数据保存的方式有两种&#xff1a; 文件保存数据库保存 在数据保存的过程中需要对数据完成去重操作&#xff0c;所有需要使用 redis 中的 set 数据类型完成去重。 1.CSV文件存储 1.1 什么是c…...

【原创】Ollama Test API For Linux/MacOS/Unix

安装Json解析工具 Linux/Unix sudo apt-get install jq -yMacOS brew install jq -y设置环境变量 export IP"192.168.250.229" export PORT"8080" export MODEL"deepseek-r1:7b"检查Ollama版本 curl http://"$IP":"$PORT&qu…...

LeetCode-Hot100-005盛最多水的容器

不懂的可以在评论区问我。 代码 双指针&#xff0c;开始的时候一个在最左边&#xff0c;一个在最右边。每次移动矮的那头&#xff0c;因为这是矮柱子作为容器能装的水的极限了。 class Solution { public:int maxArea(vector<int>& height) {int left 0; int rig…...

电源测试系统有哪些可以利用AI工具的科技??

AI技术的发展对电源模块测试系统的影响是深远的&#xff0c;不仅协助系统提升了测试效率和精度&#xff0c;还推动了测试方法的创新和智能化。那么在电源测试系统中哪些模块可以利用AI工具实现自动化测试? 1. 自动化测试与效率提升 智能测试流程优化 AI算法可以自动优化测试…...

【3-3】springcloud

OpenFeign 启动OpenFeign 定义客户端接口 注入客户端并使用 OpenFeignhttp调用ribbon负载均衡 gateway 来自&#xff1a;https://mynamelancelot.github.io/spring-cloud/spring-cloud-gateway.html#cors https://blog.csdn.net/qingdao666666/article/details/119973771 …...

Goby 漏洞安全通告| Ollama /api/tags 未授权访问漏洞(CNVD-2025-04094)

漏洞名称&#xff1a;Ollama /api/tags 未授权访问漏洞&#xff08;CNVD-2025-04094&#xff09; English Name&#xff1a;Ollama /api/tags Unauthorized Access Vulnerability (CNVD-2025-04094) CVSS core: 6.5 风险等级&#xff1a; 中风险 漏洞描述&#xff1a; O…...

‌Debian 包版本号比较规则详解

1 版本号组成结构 Debian 版本号格式为&#xff1a;[epoch:]upstream_version[-debian_revision] 示例‌&#xff1a;2:1.18.3~betadfsg1-5b1 组件说明比较优先级‌Epoch‌冒号前的数字 (2:)最高‌Upstream‌主版本 (1.18.3~betadfsg1)中‌Debian修订号‌减号后的部分 (5)最…...

009---基于Verilog HDL的单比特信号边沿检测

文章目录 摘要一、边沿检测二、时序逻辑实现2.1 rtl2.2 tb 三、组合逻辑实现3.1 rtl3.2 tb 摘要 文章为学习记录。采用时序逻辑和组合逻辑实现边沿检测的核心逻辑。组合逻辑实现的上升沿和下降沿的脉冲比时序逻辑实现的上升沿和下降沿的脉冲提前一拍。 一、边沿检测 边沿检测…...

2025全开源Java多语言跨境电商外贸商城/Tk/FB内嵌商城I商家入驻I批量下单I完美运行

商城程序介绍&#xff1a; 2025全新版UI 新增全球多站点选择 PC端&#xff1a;vueelementui 用户端使用&#xff1a;uniapp 管理端使用&#xff1a;vueelementui 后台服务使用&#xff1a;springbootmybatisplusmysql 商城功能介绍&#xff1a; 商城含21种语言 代理…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...