当前位置: 首页 > 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种语言 代理…...

Audio Slicer:智能音频切片工具终极指南,告别手动剪辑烦恼

Audio Slicer&#xff1a;智能音频切片工具终极指南&#xff0c;告别手动剪辑烦恼 【免费下载链接】audio-slicer A simple GUI application that slices audio with silence detection 项目地址: https://gitcode.com/gh_mirrors/aud/audio-slicer 还在为繁琐的音频剪辑…...

终极指南:3步在电脑上免费畅玩PS4游戏的神器——shadPS4模拟器

终极指南&#xff1a;3步在电脑上免费畅玩PS4游戏的神器——shadPS4模拟器 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 还在为无法在电脑上体验PS4独占游戏而烦恼吗&#xff1f;shadPS4模拟…...

Kernel-Bridge API完全参考手册:从CPU操作到内存管理

Kernel-Bridge API完全参考手册&#xff1a;从CPU操作到内存管理 【免费下载链接】Kernel-Bridge Windows kernel hacking framework, driver template, hypervisor and API written on C 项目地址: https://gitcode.com/gh_mirrors/ke/Kernel-Bridge Kernel-Bridge是一…...

Perplexity经济新闻搜索:5步构建专属财经情报流水线(附2024最新API调用参数)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity经济新闻搜索 Perplexity 是一款基于大语言模型的实时信息检索工具&#xff0c;其核心优势在于融合权威信源与语义理解能力&#xff0c;特别适用于高频更新、高时效性要求的经济新闻领域。用…...

Proteus仿真进阶:用STM32F103驱动L298,深入理解PWM占空比与电机速度的映射关系

Proteus仿真进阶&#xff1a;用STM32F103驱动L298&#xff0c;深入理解PWM占空比与电机速度的映射关系 在嵌入式开发中&#xff0c;电机控制是一个经典且实用的课题。很多教程会告诉你如何通过STM32的PWM输出让电机转起来&#xff0c;但很少有人解释为什么代码中会出现"10…...

【Rust + Tauri 2 + TypeScript + Tailwind CSS 4 桌面应用 UI 组件选型深度对比(2026版)】

摘要&#xff1a;随着 Tauri 2 在桌面应用开发领域的快速崛起&#xff0c;开发者面临着一个关键抉择&#xff1a;如何在前端选择最适合的 UI 组件库&#xff1f;本文基于 2026 年最新生态&#xff0c;对 shadcn/ui、Radix UI、Base UI、Mantine、Ant Design、Chakra UI、Headle…...

极竞魔方XR大空间亮相孩子王南京城市亲子节

在这个周末的南京&#xff0c;空气中除了初夏的微热&#xff0c;更多的是属于家庭的欢笑声。由母婴童行业领军品牌“孩子王”倾力打造的南京城市亲子节现场人头攒动&#xff0c;成为了全城瞩目的焦点。在琳琅满目的展位与高频互动的游乐项目中&#xff0c;孩子和家长正排队解锁…...

Hyperf 高并发的庖丁解牛

它的本质是&#xff1a;**Hyperf 的高并发并非来自 PHP 语言本身的计算速度&#xff0c;而是来自对 I/O 等待时间 (I/O Wait Time) 的极致利用。它通过 Swoole/Swow 扩展 将传统的 同步阻塞 (Sync-Blocking) 模式转变为 异步非阻塞 (Async-Non-blocking) 模式&#xff0c;并利用…...

Swift底层多线程:POSIX线程封装与安全并发实践

1. 项目概述&#xff1a;当Swift遇见POSIX线程如果你在Swift里用过DispatchQueue或者Thread&#xff0c;有没有想过它们背后到底是怎么运作的&#xff1f;特别是当你的应用需要处理高并发、低延迟的任务&#xff0c;或者需要在Linux服务器上跑一个Swift后端服务时&#xff0c;仅…...

告别手动调时!用ESP8266+STM32F103ZET6打造自动校时RTC时钟(附完整代码)

基于ESP8266与STM32的智能时钟系统&#xff1a;从NTP同步到RTC校时的全链路实践 在物联网和嵌入式系统开发中&#xff0c;精确的时间同步往往是许多应用的基础需求。无论是数据记录、事件触发还是用户界面显示&#xff0c;一个"永不走时"的时钟系统都能显著提升产品的…...