Qt通讯录管理系统

news2025/1/17 22:59:49

        在git上面找的一个操作文件的qt通讯录管理系统,尝试将它复刻了一下.

        成果展示

        分两个txt文件存储,一个是手机联系人,一个是电话卡联系人,主要功能就是增删改查,主要使用的是OOP的编程思想.

       实现过程

        界面布局

        考虑设计三个界面,主界面,添加联系人界面和修改联系人的界面.于是添加三个qt设计师类,分别是mainwindow,addwidget,editwidget.

        先进行UI设计

        添加联系人:设计一个标题,where是指的是两个不要的文件,及手机和电话卡,下面是添加的联系人的信息,最后是确认添加和取消的按钮,

        编辑联系人:左边显示的是当前选择的联系人的信息,中间是编辑框,修改后的信息,右边是两个按钮确认修改和返回.

 

        主界面:一个tabwidget显示所有的号码

        界面设计完成之后进行的是联系人类的封装,使用的是oop(面向对象的编程思想) ,于是先设计这个类personcontroller

        因为直接是字符串进行连接,所以没有封装联系人的私有属性,只是封装了一些共用的操作联系人的方法

    PersonController();
   //上层信息返回函数
    static QList<QList<QString>> search(QString name);//以姓名搜索
    static QList<QString> hasEqualsElement(QString element, int eleIndex,int pageIndex);//判断是否存在相同元素
    static QList<QString> hasEqualsElement(QList<QString> list, int eleIndex,int pageIndex);
    static bool addPerson(QList<QString> list,int index);//添加用户
    static bool deletePerson(QString name);//删除用户
    static bool deletePersonJudge(int index,QString name);//删除用户
    static bool editPerson(QList<QString> originalInfo,QList<QString> changingInfo);//编辑用户
    static bool editPersonJudge(int index,QList<QString> list,QList<QString> changingInfo);//编辑用户
    static bool transferData(int index,QList<QString> list);//转移数据

    //文件处理函数
    static void deleteOneline(int nNum, QString &strall);//删除某一行数据
    static void editOneLine(int nNum,QString &strall,QList<QString> *changingInfo);//编辑某一行的信息
    static void writeFinalInFile(int nNumLine, QString &filename,int mode,QList<QString> *changingInfo=nullptr);//写入最终文件


    static void printQList(QList<QString> list);//调试信息,打印某一行的信息
    static void printQList(QList<QList<QString>> list);//打印所有信息
    static void printAllPerson(int index);//打印该空间所有人的信息
    static int  getLine(int index);//获取行数
    static QString listTransToString(QList<QString> list);//数据格式转换

        之后对添加联系人进行设计:这里需要注意的就是使用0,1区分两个文件 和界面关闭之后使用emit发送一个信号触发其他的操作.

 explicit AddWidget(int i,QWidget *parent = nullptr);

    void initAttr();//初始化属性
    void initFun();//初始化信号

    void addPerson();//添加联系人
    void cancel();//返回

    ~AddWidget();

signals:
    bool hasDestory();//界面结束信号


private:
    Ui::AddWidget *ui;
    int index;//0为电话,1为电话卡

    virtual void keyPressEvent(QKeyEvent *ev);

        修改联系人类似添加联系人进行设计

         主界面设计了这些方法和属性

public:
    MainWindow(QWidget *parent = nullptr);
    void initAttr();//初始化属性
    void initFun();//初始化信号与槽、相关函数

    void changePhonePage();//更变页面
    void changeSimPage();//更变页面
    void addPerson();//添加联系人
    void deletePerson();//删除联系人
    void transferPerson();//转移联系人

    void modifyPerson();//修改联系人
    void searchPerson();//搜索联系人

    void flushPage(int index);//页面数据刷新
    void flushPage(int i,int j);//页面数据刷新

    void clearPage(int index);//清除页面数据
    void clearPage(int i,int j);//清除页面数据

    ~MainWindow();


private:
    Ui::MainWindow *ui;
    AddWidget *addWidget=nullptr;
    EditWidget *editWidget=nullptr;

    virtual void keyPressEvent(QKeyEvent *ev);

private slots:
       void hasDestory();//槽函数,用于判断界面切换传参

 大概的思路就是这样,资源会同步上传,希望对大家有所帮助

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解nginx realip模块[上]

目录 1. 引言2. Real IP模块的使用2.1 启用Real IP模块2.2 配置Real IP模块2.2.1 配置指令2.2.2 举例 3. 变量的使用 深入理解nginx realip模块[上] 深入理解nginx realip模块[下] 1. 引言 nginx 的 Real IP 模块用于解决代理服务器转发请求到nginx上时可能出现的 IP 地址问题…

ES入门十一:正排索引和倒排索引

索引本质上就是一种加快检索数据的存储结构&#xff0c;就像书本的目录一下。 为了更好的理解正排索引和倒排索引&#xff0c;我们借由一个 **唐诗宋词比赛&#xff0c;**这个比赛一共有两个项目&#xff1a; 给定诗词名称&#xff0c;背诵整首给诗词中几个词语&#xff0c;让…

lua学习笔记6(经典问题输出99乘法表)

print("************for循环的99乘法表*************") for i 1, 9 dolocal line "" -- 创建一个局部变量来累积每行的输出--local 是一个关键字&#xff0c;用于声明一个局部变量。for j 1, i doline line .. j .. "*" .. i .. ""…

mysql查询时大小写,末尾空格容易造成的问题。

问题描述 在使用mysql innodb 默认的配置时&#xff0c;发现mysql查询时是忽略大小写和末尾空格的。 示例 比如下面的查询&#xff1a;查询条件中是大写的字母&#xff0c;末尾也没有空格。但是查询出的结果中&#xff0c;既有小写的&#xff0c;也有末尾带有空格的&#xf…

Windows Edge浏览器的兼容性问题及解决方案

1、Windows Edge&#xff08;了解 Microsoft Edge&#xff09;&#xff1a; 简单介绍&#xff1a; Microsoft Edge是一款由微软开发的网页浏览器&#xff0c;最初于2015年伴随Windows 10推出&#xff0c;作为Internet Explorer的继任者&#xff0c;旨在提供更快、更安全、更现代…

二维相位解包理论算法和软件【全文翻译- 掩码(3.4)】

本节我们将研究从质量图中提取掩码的问题。掩码是一个质量图,其像素只有两个值:0 或 1。零值像素标志着质量最低的相位值,这些相位值将被屏蔽、零权重或忽略。第 5 章中的某些 L/ 正则算法需要使用掩码来定义零权重。掩码还可用于某些路径跟踪算法,如第 4.5 节中将要介绍的…

Linux:安装zabbix-agent被监控端(2)

本章是结合着上一篇文章的续作 Linux&#xff1a;部署搭建zabbix6&#xff08;1&#xff09;-CSDN博客https://blog.csdn.net/w14768855/article/details/137426966?spm1001.2014.3001.5501本章将在两台centos部署agent端&#xff0c;然后使用server进行连接监控 agent1 在1…

PostgreSQL技术内幕(十五):深度解析PG事务管理和分布式事务

PostgreSQL技术内幕&#xff08;十五&#xff09;&#xff1a;深度解析PG事务管理和分布式事务 事务作为保障数据完整性和一致性的关键机制&#xff0c;在数据库操作中扮演着举足轻重的角色。事务通过将一系列逻辑上的操作捆绑在一起&#xff0c;确保它们要么全部成功执行&…

IPD集成项目管理:继电器供应商宏发股份上线奥博思 PowerProject 项目管理系统平台

厦门宏发电声股份有限公司&#xff08;以下简称“宏发股份”&#xff09;签约北京奥博思软件公司&#xff0c;选择PowerProject建设全生命周期数字化项目管理平台。 了解奥博思项目管理软件&#xff1a;http://www.powerproject.com.cn/ 宏发股份项目管理系统启动会顺利召开 …

rsync-远程同步备份

目录 前言 一、rsync远程同步概述 1、rsync远程同步概念 2、rsync功能及特点 3、rsync的备份方式 4、rsync的上下行同步方式 4.1 下行同步 4.2 上行同步 5、rsyncinotify 6、rsync同类服务 7、rsync与cp、scp对比 二、rsync命令 1、rsync格式语法 2、rsync配置同…

Clarity AI:免费开源的AI无损图片放大图像升级器和增强工具

可以作为Magnific AI的平替版本。Magnific AI是一款基于人工智能技术的图像处理工具&#xff0c;主要功能包括图像放大、像素级AI重绘、灵活的设置调整以及多种优化场景。它能够支持最高放大至16倍&#xff0c;甚至可以达到1亿像素的分辨率。此外&#xff0c;Magnific AI还具备…

MySQL中数据库、表的操作

文章目录 一、管理数据库1.1、连接数据库1.2、创建库1.3、选择数据库1.4、修改数据库名称1.5、查看数据库信息1.6、删除库 二、定义数据表字段2.1、数据表字段的数据类型2.2、数据表字段属性2.3、约束讲解2.3.1、约束的定义1&#xff09;为什么需要约束2&#xff09;什么是约束…

敏感信息泄露漏洞

法律声明 参与培训需要遵守国家法律法规&#xff0c;相关知识只做技术研究&#xff0c;请勿用于违法用途&#xff0c;造成任何后果自负与本人无关。 中华人民共和国网络安全法&#xff08;2017年6月1日起施行&#xff09; 第二十二条 任何个人和组织不得从事入侵他人网络、干扰…

CAD Plant3D 2024 下载地址及安装教程

CAD Plant3D是一款专业的三维工厂设计软件&#xff0c;用于在工业设备和管道设计领域进行建模和绘图。它是Autodesk公司旗下的AutoCAD系列产品之一&#xff0c;专门针对工艺、石油、化工、电力等行业的设计和工程项目。 CAD Plant3D提供了一套丰富的工具和功能&#xff0c;帮助…

八次危机笔记

文章目录 前言一、思维导图危机一危机二危机三危机四危机五危机六危机七危机八 前言 重塑三观&#xff0c;致敬温老。一个有良心的学者&#xff01;&#xff01;&#xff01; 一、思维导图 危机一 危机二 危机三 危机四 危机五 危机六 危机七 危机八 ☆

如何实现异地公网环境访问本地部署的支付宝沙箱环境调试支付SDK

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

qt 打印日志

在 Qt Creator 中&#xff0c;将 QDebug、QInfo、QWarning、QCritical 和 QFatal 打印的日志输出到指定文件&#xff0c;需要设置 Qt 的消息处理机制。这通常涉及到安装一个自定义的消息处理器&#xff0c;该处理器将日志消息重定向到文件。以下是一个基本的步骤指南&#xff1…

鸿蒙实现一种仿小红书首页滑动联动效果

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 效果描述&#xff1a;通过手指滑动列表&#xff0c;控制位置显示效果为&#xff1a;不论列表在什么位置下滑时下图粉色位置布局显示&#xff0c;手指上滑时下图粉色位置布局隐藏。 效果&#xff1a; 原理分析&…

【分治算法】大整数乘法Python实现

文章目录 [toc]问题描述基础算法时间复杂性 优化算法时间复杂性 Python实现 个人主页&#xff1a;丷从心. 系列专栏&#xff1a;Python基础 学习指南&#xff1a;Python学习指南 问题描述 设 X X X和 Y Y Y都是 n n n位二进制整数&#xff0c;计算它们的乘积 X Y XY XY 基础…

System Verilog中的线程fork...join_none的#0时延

System Verilog 首先对fork…join_none里的线程进行调度&#xff0c;但是由于#0时延阻塞了当前线程&#xff0c;并且将它重新调度到当前时间片之后启动时延使得当前线程必须等到所有在fork…join_none语句中产生的线程执行完之后才得以运行。 program no_auto;initial beginfo…