首页 > 其他分享 >Qt通讯录管理系统

Qt通讯录管理系统

时间:2024-04-09 16:58:43浏览次数:13  
标签:index Qt 管理系统 int void 联系人 static 通讯录 QList

        在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();//槽函数,用于判断界面切换传参

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

 

标签:index,Qt,管理系统,int,void,联系人,static,通讯录,QList
From: https://blog.csdn.net/qq_57049935/article/details/137513049

相关文章

  • Qt 项目编译流程总结
    通过VS来开发Qt项目的过程中,整个Qt项目的编译需要如下几个过程:Uic---->Rcc---->Moc---->预处理----->编译----->汇编----->链接对比普通的C++项目,Qt多了Uic---->Rcc---->Moc这三步。现在对QT项目所多出的三个编译过程进行分析:一、Uic:QtUserInte......
  • 学生选课管理系统——人员管理计划
    针对本小组项目遇到的某个问题,按照下述步骤,商量一个改进的具体计划,同时评价改进的效果1、建立规则,仪式,流程,模式2、给好行为正面的反馈3、明确指出不合适的行为,必要时调整人员针对本小组项目(学生选课管理系统)遇到的某个问题,我们可以按照以下步骤制定一个改进的具体计划,......
  • Qt加Opencv实现 梯度矫正 功能
    废话:有时候我们是从物品的斜上方拍摄的图片,看起来不直观,需要把视角拉正,这样的一个操作就叫做梯度矫正,需要用到的技术是Opencv的透视变换。这个只是一个简单的演示demo,如果完善一下,比如物品检测,可以应用更多的场景,比如常见的:文件、资料上传,软管摄像头的应用等,怎么说也是一个......
  • MQTT基础
    1、MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议2、MQTT历史:MQTT协议最初版本是在1999年建立的。他们当时正在开发一个利用卫星通讯监控输油管道的项目。为了实现这个项目要求,他们需要开发一种用于嵌入式设备的通讯协议,这种通讯协议必须满足以下条件:易于实现数......
  • MQTT用python写的收消息例子
    在MQTT官网给的sub_wss.py例子中修改改写自己的用户名和密码BROKER='*******.ala.cn-hangzhou.emqxsl.cn'//改成自己的连接地址USERNAME='**************'//用户名PASSWORD='*************'//密码注意这句是改使用v1回调API(与旧版本的库一起使用)。原......
  • java 版本企业招标投标管理系统源码+多个行业+tbms+及时准确+全程电子化
    项目说明随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审计监督要求;通过电子化平台提高招投标工作的公开性......
  • 【附源码】JAVA计算机毕业设计校园活动管理系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着信息技术的不断发展和教育现代化的深入推进,校园活动作为丰富学生课余生活、提升综合素质的重要途径,其管理方式也亟需与时俱进。传统的校园活动管理......
  • 【附源码】JAVA计算机毕业设计小型企业员工工资管理系统(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在当今的企业管理中,工资管理是至关重要的一环,它不仅关系到员工的切身利益,也直接影响到企业的稳定发展和人力资源的有效配置。小型企业由于规模和资金的......
  • 基于Java的仓库在线管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 【QT教程】QT6 QML编程
    QT6QML编程使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看免......