QTcreator开发日记应用程序(新手快速上手 GIF展示)

写在前面

我个人是一个比较有情怀的人,就算是手机上的用了很久的app也会产生依赖感,而“吾记”这款app以其简约与文艺在很早之前走入了我的生活。这段时间在学习QT开发,也算是一个巩固C++ 的过程,我想自己动手在win端写一个低配的“吾记”,整个项目目前还处在开发状态,但是大体的框架是有了,主要功能也基本成型了,后期会添加一些个性化功能,本博客持续更新。

开发环境:win10, QT creator, MINGW
开发语言:C++11以上即可
开发基础知识:面向对象

项目github:https://github.com/ZYunfeii/QT
环境变量需要自己配

登陆界面

这块目前内置了三个账号,一个测试账号(debug用),两个用户账号。算是一个较为传统的登陆界面,输入账号密码点击登陆即可,目前还没有开发账号注册功能(因为我是自己用的想着)。
在这里插入图片描述
实现方法也挺简单的,两个QStringList对应账号密码,按钮信号槽链接,获取用户名索引,没获取就是没账号,获取了再去验证密码正确与否即可。

主界面

这一部分是用户登陆成功后进入的界面,整体画风不够唯美,需要ui设计师美化hhh。
在这里插入图片描述

这一部分主要是一个显示已经写下的日记以及删除日记(右边有小×)。日记包阔内容,时间,当时的字体和字号等。当然还有这个用户的头像…所有的数据都是通过数据库SQLite进行管理和存储,这会在之后介绍。用数据库好处就是下一次登陆所有的数据都在,并且数据库用C++操作起来也挺方便。

新建日记界面

点击主界面右上角得新建按钮即可新建一个日记:
在这里插入图片描述
这个编辑页面目前支持字体和字号的调节,当写下今日的快乐亦或是烦恼后,点击右上角的保存,记录下来吧!
在这里插入图片描述
刚刚写的日记被自动置顶了,字体字号和编辑的一致。

如果你对过去的自己失望,那么请删除那些时候的自己写下的傻话吧(点击右边红×),数据库同时也会删除这条记录,并且,你再也没有方法恢复它。毕竟,过去永远不会再来,时钟永远不会停摆。

数据库SQLite

QT自带数据库SQLite,使用数据库可别忘了在pro文件加上这么一句:

QT += sql

数据库创建多个表:

        //创建n个数据库(n = usernameList.length())
        QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",QString("myDiary%1").arg(i));
        db.setDatabaseName(QString(".//qtDb%1.db").arg(i));
        if( !db.open())  qDebug() << "无法建立数据库连接";       //这个db.open相当关键啊!没这一步后面写数据可失败。
        else qDebug()<<"数据库连接成功";

        QSqlQuery query(db);
        query.exec("create table person (time varchar, diary varchar,family varchar,pointSize varchar)");
        db.close();

可别忘了:#include <QSqlQuery> #include <QSqlDatabase>
另外,第一次操作别忘了db.open()
数据库中包含四个信息:时间,日记内容,字体,字号,后续可能会增加。

主界面中链接对应用户的数据库,利用数据库可以完成很多功能,比如那个统计日记条数的功能可以这样实现:

    //初始化日记数量并显示在顶部
    query.first();
    query.previous();
    if(query.last())
    {
    
    
        numberOfRows =  query.at() + 1;
    }
    ui->diaryNumLabel->setText(QString("您已累计写下了%1篇日记").arg(numberOfRows));

query就是拿到的数据库“指针”。首先将query移到第一个数据的前一个虚拟位置,然后query.last下去,直到query指向最后一个数,取其索引加1即为数据库总容量。
数据库这方面知识我推几篇博文吧还是:
QT-QSqlQuery类操作SQLite数据库(创建、查询、删除、修改)详解
Qt数据库:(三)利用QSqlQuery类执行SQL语句(一)
Qt之自带的数据库QSQLITE(很具体的一个例子)
Qt学习之路八——利用qt对数据库进行操作
读完基本就能上手,别问,问就是试过!

当然数据库还有很多坑,例如我在利用日期string进行删除时数据库进行对比的是加单引号的string,这个时候这么干:

QString deleteString = QString("%1%2%3").arg("'").arg(time).arg("'");                 
bool flag = query.exec(QString("DELETE FROM person WHERE time = %1").arg(deleteString));

嘿嘿,小trick

组合自己的控件

在这里插入图片描述
像这样的一个控件是由多个控件做出来的封装控件,具体做法就不再赘述了(提升为 操作),反正面向对象是灵魂。

scrollArea和Layout

这两个空间构成了主界面的主体,scrollArea就像是一个覆盖在桌布上的窗口,理解这句话就理解了这个控件,layout决定了桌布上放的东西的排列规则。这里推一篇博文:
QT的自动滚动区QScrollArea的用法,图文详解

项目未完待续

主界面下面那个白条就是未来拓展功能用的。学习语言还是开发来得有效。
项目已上传至githubhttps://github.com/ZYunfeii/QT

11月8日:
在这里插入图片描述

11月9日:
新增日记记录功能,支持双击弹出日记详情,数据库也连上了:
在这里插入图片描述

11月16日:
对登录界面做了一些优化:默认登录名、使用回车键快速登录。并改动了exe可执行程序的图标,目前我已经开始用了嘿嘿,还不错感觉:
在这里插入图片描述
11月17日:
针对登录界面用户名和用户密码采用map关联容器重写,针对用户界面增添了多个动画效果:
在这里插入图片描述

11月22日:
今天突然冒出了个点子对登录界面做了个功能,当账户和密码输对时加载头像(和qq有点区别)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43145941/article/details/109559455
gif
今日推荐