Qt通讯录管理系统

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

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

 

相关推荐

  1. 【C++】通讯录管理系统

    2024-04-14 04:36:01       20 阅读
  2. C++项目(通讯录管理系统

    2024-04-14 04:36:01       7 阅读
  3. c++手机通讯录管理系统280

    2024-04-14 04:36:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 04:36:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 04:36:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 04:36:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 04:36:01       20 阅读

热门阅读

  1. [蓝桥杯] 数位排序(C语言)

    2024-04-14 04:36:01       17 阅读
  2. EditPlus简介、安装及配置

    2024-04-14 04:36:01       15 阅读
  3. matlab多核程序如何共享内存和数据

    2024-04-14 04:36:01       22 阅读
  4. springboot3 redis 实现分布式锁

    2024-04-14 04:36:01       20 阅读