2024OSPP KDE项目中期总结
OSPP项目开始已经过去三周了,三周过去,我的项目已经取得了一定的进展。
第一周 7月1号——7月7号
在项目的第一周,在导师的帮助下,我首先配置好了一个合适的开发环境,并确定了项目的首先迁移的应用为Blinken。除此之外,也搭建这个项目博客,目前博客已经被KDE planet收录。
目前使用的开发环境在一台Fedora workstation 40 的Virtual Box虚拟机上,在这台虚拟机上我可以编译构建KDE应用,并进行Qt开发。
构建KDE开发环境推荐使用KDE官方提供的kdesrc-build,同时也推荐在KDE的Neon系统下进行开发,可以选择使用docker 或者虚拟机
构建Qt安卓开发环境比较简单的方法是使用[Qt Online Installer](Get and Install Qt | Qt 6.7)和QtCreator 装好QtCreator之后,在Editing-> Perferences->devices-> Android 那里可以选择自己需要的开发套件,QtCreator会自动下载需要的Sdk和Ndk。
第二周 7月8号——7月14号
在导师的建议下,我开发了一个简单的Tic-Tac-Toe的QML游戏作为练手。 这个游戏使用QML绘制了一个简单的页面,并使用C++class控制游戏逻辑,我即将迁移的游戏也将会是这种架构。
游戏目前实现的特性有
- 多语言本地化支持
- 具备单元测试
- 可以跨平台运行
Tic-Tac-Toe游戏目前已经被我放到KDE invent上。hanyang zhang / TicTacToe · GitLab
对QML应用做本地化支持需要使用Qt提供的本地化工具lupdate、lrelease等。 但是因为项目使用Cmake构建,Qt也提供了相应的Cmake方法:qt_add_translations | Qt Linguist Manual
另外,我在构建QML安卓应用时遇到了一些困难,见: QML 安卓应用构建与运行 | Blog
第三周 7月15号——7月21号
在这一周我正式开始迁移Blinken的工作。
在研究了Blinken的源码之后,我发现Blinken的界面是由一个名为Blinken的类绘制的,这个类有1000多行,绘制逻辑一部分为操作Blinken.svg中元素,另外一部分为使用QPainter直接绘制。
但是遗憾的是,QML中并没有提供如Qtwight那样操作SVG图片的功能,于是我用Adobe Illustrator和Inkscape对SVG图片进行了拆分和编辑,将所有元素分别单独拆为文件,并用QML将这些元素组装了起来。
对UI的修改花费的时间比我想象中的长,不过一周过去,我基本完成了对Blinken界面的绘制,接下来主要是修改一些页面细节,以及将Blinken的逻辑转移过来。
值得一提的是,QML并未提供非矩形的MouseArea供使用,需要自己写一个类来实现这个功能。不过好在早期版本的文档里提供了一个这样的examplemaskedmousearea « customitems « quick « examples - qt/qtdeclarative.git - Qt Declarative (Quick 2) 虽然不知道为什么这个例子在最新版本中被删除了,但应该可以参照着实现。